Java入门基础学习笔记44——String

为什么要学习String的处理呢?

开发中,对字符串的处理是非常常见的。

String是什么?可以做什么?

java.lang.String 代表字符串。可以用来创建对象封装字符串数据,并对其进行处理。

1、创建对象

2、封装字符串数据

3、调用String的方法

String创建对象封装字符串数据的方法:

方式一:

Java程序中的所有字符串文字(例如:“abc”)都为此类对象。

String name = "小黑";
String SchoolName = "黑马程序员";

方式二:

调用String类的构造器初始化字符串对象。

new String()创建字符串对象,并调用构造器初始化字符串。

package cn.ensource.string;

public class StringDemo {
    public static void main(String[] args) {
        String name = "itheima";
        System.out.println(name);

        String rs1 = new String();
        System.out.println(rs1);

        String rs2 = new String("itheima");
        System.out.println(rs2);

        char[] chars = {'a', 'b', 'c'};
        String rs3 = new String(chars);
        System.out.println(rs3);

        byte[] bytes = {100, 101, 102};
        String rs4 = new String(bytes);
        System.out.println(rs4);
    }
}

运行结果:

通过构造函数创建

通过new创建的字符串对象,每一次new都会申请一个空间,虽然内容相同,但是地址值不同。

直接赋值方式创建:

以“”双引号给出的字符串,只要字符串序列相同顺序和大小相同,无论程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。

String类的常用方法:

String提供的操作字符串数据的常用方法:

为什么是快速熟悉这些方法呢?

API是解决需求的,快速地认识他们,实实在在地解决业务需求。

package cn.ensource.string;

public class StringDemo2 {
    public static void main(String[] args) {
        // 目标:快速熟悉String提供的处理字符串的方法
        String s = "黑马Java";

        // 获取字符串的长度
        System.out.println(s.length());

        // 提取字符串中某个索引位置处的字符
        char c = s.charAt(1);
        System.out.println(c);

        // 字符串的遍历
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            System.out.print(ch);
        }

        System.out.println("--------");

        // 把字符串转成字符数组,然后再进行遍历
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.print(chars[i]);
        }

        System.out.println("--------");

        // 判断字符串内容,内容一样,就返回true
        String s1 = new String("黑马");
        String s2 = new String("黑马");

        boolean rs = s.equals(s2);
        System.out.println(rs);

        System.out.println("--------");

        // 忽略大小写比较字符串
        String c1 = "34Aefg";
        String c2 = "24aefg";
        System.out.println(c1.equals(c2));
        System.out.println(c1.equalsIgnoreCase(c2));


        System.out.println("--------");

        // 截取字符串内容
        String s3 = "Java是最好的编程语言之一";
        System.out.println(s3.substring(0, 8));

        System.out.println("--------");

        // 截取字符串内容,从当前位置到字符串末尾
        System.out.println(s3.substring(8));

        System.out.println("--------");

        // 把字符串的某个内容,替换成新内容
        String s3c = s3.replace("Java", "C++");
        System.out.println(s3c);

        System.out.println("--------");

        // 判断字符串中是否包含某个关键字
        String info = "Java是最好的编程语言之一";
        boolean rs5 = info.contains("Java");
        System.out.println(rs5);

        // startwith
        System.out.println("--------");

        String info2 = "Java是最好的编程语言之一";
        boolean rs6 = info2.startsWith("Java");
        System.out.println(rs6);

        System.out.println("--------");

        // 分割字符串
        String str5 = "张无忌,周芷若,殷素素,赵敏";
        String[] names = str5.split(",");
        for(int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}

split这个成员方法,之前在python中也遇到。

如果方法不再记得了,都是可以到API文档中查询的。

另外:

==:

比较基本数据类型:比较具体的值。

比较引用数据类型:比较的是对象地址值。

package com.company;


public class Main {
    public static void main(String[] args) {
        char[] chs = {'a', 'b', 'c'};
        String s1 = new String(chs);
        String s2 = new String(chs);


        String s3 = "abc";
        String s4 = "abc";


        System.out.println(s1 == s2);
        System.out.println(s1 == s4);
        System.out.println(s3 == s4);


        System.out.println("-------------");


        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println(s3.equals(s4));


    }
}

运行结果:

false
false
true
-------------
true
true
true

用户登录案例:

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        String username = "changchunhua";
        String password = "chang@123";


        for (int i=0; i<3; i++) {
            Scanner sc =  new Scanner(System.in);
            System.out.println("Please input username: ");
            String name = sc.nextLine();
            System.out.println("Please input password: ");
            String pwd = sc.nextLine();


            if (name.equals(username) && pwd.equals(password)) {
                System.out.println("Sign in susccessfully!");
                break;
            } else {
                if (2 - i == 0) {
                    System.out.println("Your account is locked!");
                } else {
                    System.out.println("Your has 2 - i times to sign in.");
                }
            }
        }
    }
}

运行结果: 

Please input username:
chang
Please input password:
chang@123
Your has 2 - i times to sign in.
Please input username:
changchun
Please input password:
chang@123
Your has 2 - i times to sign in.
Please input username:
changchunhua
Please input password:
chang@123
Sign in susccessfully!

字符串反转:

package com.company;
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Please input a string: ");
        String line = sc.nextLine();
        String s = reverse(line);
        System.out.println("s: " + s);
    }


    public static String reverse(String s) {
        String ss = "";


        for(int i=s.length()-1; i>=0; i--) {
            ss += s.charAt(i);
        }
        return ss;
    }
}

运行结果:

Please input a string:
changchunhua
s: auhnuhcgnahc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/644598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux signal】

Linux signal 一、信号分类二、什么是信号集&#xff1f;三、信号的3个处理过程3.1 发送信号3.1.1 向自身发送信号(raise)3.1.2 向别的进程发送信号(kill)3.1.3 发送闹钟信号(alarm) 3.2 接收(注册)信号3.3 处理信号 在Linux操作系统中&#xff0c;SIGUSR1和SIGUSR2是用户定义的…

学习Uni-app开发小程序Day18

昨天学习了使用轮播显示图片和文字&#xff0c;轮播方式纵向和横向。今天使用扩展组件和scroll-view显示图片&#xff0c;使用scroll-view的grid方式、插槽slot、自定义组件、磨砂背景定位布局做专题组件 这就是需要做成的效果&#xff0c;下面将一步一步的完成。 首先&#x…

在家庭影院音频中应用的D类音频放大器

家庭影院的主要组成部分包括显示设备、音响设备、信号源和接线设备等。家庭影院的音响信号需要进行处理和输出&#xff0c;以获得高质量的音效。音响设备通常需要一台功率适当的数字、模拟混合的处理器&#xff0c;对音源进行降噪、均衡、扩展等处理操作&#xff0c;以达到高品…

企业微信hook接口协议,ipad协议http,根据手机号搜索联系人

根据手机号搜索联系人 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","phoneNumber":"1357xxxx" } 返回示例 {"data&q…

基于PLC的地铁屏蔽门系统设计_kaic

摘 要 可编程序控制器&#xff08;PLC&#xff09;是近年来发展迅速的工业控制装置&#xff0c;它因为具有强大的稳定性、安全性以及维修便利等优点而应用于工业企业各个领域。地铁作为当代一二线城市最重要的公共交通工具&#xff0c;其安全性以及稳定性至关重要。 以PLC为控…

MHDDoS:一个包含了56种技术的DDoS测试工具

关于MHDDoS MHDDoS是一款功能强大的DDoS服务器/站点安全测试工具&#xff0c;该工具包含56种技术&#xff0c;可以帮助广大研究人员对自己的服务器或网站执行DDoS安全测试。 工具技术 Layer7 GET | GET 泛洪 POST | POST 泛洪 OVH | 绕过OVH RHEX | 随机HEX STOMP | 绕过chk_…

使用pyqt绘制一个爱心!

使用pyqt绘制一个爱心&#xff01; 介绍效果代码 介绍 使用pyqt绘制一个爱心&#xff01; 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget from PyQt5.QtGui import QPainter, QPen, QBrush, QColor from PyQt5.QtCore import Qt, Q…

Spring AI实战之二:Chat API基础知识大串讲(重要)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos Spring AI实战全系列链接 Spring AI实战之一&#xff1a;快速体验(OpenAI)Spring AI实战之二&#xff1a;Chat API基础知识大串讲(重要)SpringAIOllama三部曲…

three.js能实现啥效果?看过来,这里都是它的菜(09)

Hi&#xff0c;这是第九期了&#xff0c;继续分享three.js在可视化大屏中的应用&#xff0c;本期分享位移动画的实现。 位移动画 Three.js位移动画是指在Three.js中实现物体位置的平移动画。通过改变物体的位置属性&#xff0c;可以实现物体沿着指定路径从一个位置移动到另一…

ros2编写pcl节点加载pcd文件

初次学习ros2和pcl&#xff0c;尝试在ros2中创建节点&#xff0c;加载pcd文件&#xff0c;并在rviz中进行可视化&#xff0c;记录一下整个过程。 编辑环境 ubuntu20.04 ros2_foxy 创建节点 mkdir -p proj_ws_pcl/src #创建工程文件夹 cd proj_ws_pcl/src #创建源码文件夹 …

车载电子电器架构 —— 智能座舱技术

车载电子电器架构 —— 智能座舱技术 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的…

构建php环境

目录 php简介 官网php安装包 选择下载稳定版本 &#xff08;建议使用此版本&#xff0c;文章以此版本为例&#xff09; 安装php解析环境 准备工作 安装依赖 zlib-devel 和 libxml2-devel包。 安装扩展工具库 安装 libmcrypt 安装 mhash 安装mcrypt 安装php 选项含…

Next.js里app和pages文件夹的区别

最近开始学 Next.js&#xff0c;因为纯自学&#xff0c;有时候网上找到的学习资料都是几年前的&#xff0c;难免会有点 outdated&#xff0c;因此当自己创建的项目结构和视频里呈现的结构不一致时&#xff0c;难免会有点困惑。 例如&#xff0c;今天遇到的第一个问题就是&…

光速入门python的OpenCV

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理python的OpenCV模块的关键知识点 争取用最短的时间入门OpenCV 并且做到笔记功能直接复制使用 OpenCV简介 不浪费时间的介绍: 就是类似于ps操作图片。 至于为什么不直接用ps&#xff0c;因为只有程序能…

社交媒体数据恢复:绿洲

本教程将向您展示如何在绿洲平台上备份和恢复数据&#xff0c;但不涉及推荐任何具体的数据恢复软件。 一、绿洲平台数据备份 为了确保数据的安全&#xff0c;在日常使用过程中&#xff0c;我们需要定期备份绿洲平台上的数据。以下是备份绿洲平台数据的步骤&#xff1a; 登录绿…

【SpringCloud】服务注册与发现

目录 Eureka/注册中心简介模式 使用Eureka实现注册中心1.创建一个名称为demo-eureka-server的Spring Boot项目2.添加项目依赖3. 在启动类添加启动注解4.添加配置信息Eureka的自我保护机制为Eureka Server添加用户认证1.添加依赖2. 添加配置信息3.添加放行代码4.启动服务&#x…

springboot+vue+mybatis校园兼职平台+PPT+论文+讲解+售后

社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个学生的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要…

VMware虚拟机中ubuntu使用记录(10)—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

得帆信息PMO总监李健达受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 上海得帆信息技术有限公司aPaaS业务线副总裁、PMO总监李健达先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“AI时代的PMO工作法”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#x…