String类——判断功能

2023-11-06

String类——判断功能:断点设置、字符串、查看API文档、String类的构造方法、字符串的长度、内存结构图


断点设置:一般情况下,需要在每个方法的第一条有效语句设置断点。

String类

0、String类所在的包:java.lang (所以不需要自己受到导入,系统自动导入)。

1、字符串

(1)字符串:就是由多个字符组成的一串数据,也可以看做是一个字符数组。

2、查看API文档

    (1)字符串字面值常量"abcde"也可以看作是一个字符串对象。

    (2)字符串时常量,一旦被赋值,就不能被更改。 

3、String类的构造方法(学习其中的6个):

(1)public String( )

        空构造方法,默认的无参构造方法

(2)public String(byte[ ] bytes)

        把字节数组转换成字符串

(3)public String(byte[ ] bytes,int offset,int length)

        把字节数组的一部分转换成字符串:从offset开始的length个字符转换为字符串

(4)public String(char[ ] value)

        把字符数组转换成字符串

(5)public String(char[ ] value,int offset,int count)

        把字符数组的一部分转换成字符串

(6)public String(String original)

        把字符串常量值转换成字符串

4、字符串的长度

(1)public int length():返回此字符串的长度

5、举例:构造方法、字符串长度

package cn.itcast_01;

public class StringDemo {
	public static void main(String[] args) {
		// public String()
		// 空构造方法
		String s1 = new String();
		System.out.println("s1=" + s1);
		System.out.println("s1.length()=" + s1.length());
		System.out.println("-------------");

		// public String(byte[] bytes)
		// 把字节数组转化为字符串
		byte[] bys = { 97, 98, 99, 100, 101 };
		String s2 = new String(bys);
		System.out.println("s2=" + s2);
		System.out.println("s2.length()=" + s2.length());
		System.out.println("-------------");

		// public String(byte[] bytes,int offset,int length)
		// 把字节数组的一部分转换成字符串
		// 我现在想得到字符串“bcd”
		String s3 = new String(bys, 1, 3);
		System.out.println("s3=" + s3);
		System.out.println("s3.length()=" + s3.length());
		System.out.println("-------------");

		// public String(char[] value)
		// 把字符数组转换成字符串
		char[] chs = { 'a', 'b', 'c', 'd', 'e', '爱', '林', '青' };
		String s4 = new String(chs);
		System.out.println("s4=" + s4);
		System.out.println("s4.length()=" + s4.length());
		System.out.println("-------------");

		// public String(char[] value,int offset,int count)
		// 把字符数组的一部分转换成字符串
		String s5 = new String(chs, 5, 3);
		System.out.println("s5=" + s5);
		System.out.println("s5.length()=" + s5.length());
		System.out.println("-------------");
		
		//public String(String original)
		//把字符串常量值转换成字符串
		String s6 = new String("abcabcabcabcabcabc");
		System.out.println("s6=" + s6);
		System.out.println("s6.length()=" + s6.length());
		System.out.println("-------------");
		
		//字符串字面值常量"abcde"也可以看作是一个字符串对象
		String s7 = "abcabcabcabcabcabc";
		System.out.println("s7=" + s7);
		System.out.println("s7.length()=" + s7.length());

	}

}

6、String的特点:一旦被赋值,其值就不能被改变。

(1)字符串被赋值的方法:

        字符串直接被赋值的方法  是先到方法区中的字符串常量池中去寻找该字符串,若没找到,则创建字符串并返回地址值给字符串对象。

        一旦被赋值,就不能被改变。(是其值不能被改变,不是引用不能被改变!)

(2)举例:字符串被赋值

package cn.itcast_02;

public class StringDemo {
	public static void main(String[] args) {
		String s = "hello";
		s += "world";
		System.out.println("s=" + s);
		System.out.println("s.length()="+s.length());
	}

}

(3)字符串被赋值的内存结构图:



(4)面试题:

String s = new String("hello");    与    String s = "hello" 有没有区别?

答案:有区别。前者会创建两个对象,后者会创建1个对象。

(5)== 和 equals( ) 的区别:

    1)==    :比较引用类型时,比较的是地址值是否相同。

    2)equals:比较引用类型时,默认比较的也是地址值是否相同,而String类已经重写了equals()方法,比较的是两个字符串内容是否相同。

    3)代码:

package cn.itcast_02;

public class StringDemo2 {
	public static void main(String[] args) {
		String s1 = new String("hello");
		String s2 = "hello";

		System.out.println(s1 == s2); // false
		System.out.println(s1.equals(s2)); // true
	}
}
    4)内存结构图:

(6)面试题:字符串变量相加、字符串常量相加

        A:如果是字符串变量相加,是 先开辟内存空间,再拼接。

        B:如果是字符串常量相加,是 先拼接,然后在常量池中寻找,如果有就直接返回,否则,就开辟内存空间去创建。

package cn.itcast_02;

public class StringDemo2 {
	public static void main(String[] args) {
		String s1 = new String("hello");
		String s2 = "hello";

		System.out.println(s1 == s2); // false
		System.out.println(s1.equals(s2)); // true

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

		String str1 = new String("hello");
		String str2 = new String("hello");
		System.out.println(str1 == str2); // false
		System.out.println(str1.equals(str2)); // true
		System.out.println("------------");

		String str3 = new String("hello");
		String str4 = "hello";
		System.out.println(str3 == str4); // false
		System.out.println(str3.equals(str4)); // true
		System.out.println("------------");

		String str5 = "hello";
		String str6 = "hello";
		System.out.println(str5 == str6); // true
		System.out.println(str5.equals(str6)); // true
		System.out.println("------------");

		// 如果是字符串变量相加,是 先开辟内存空间,再拼接。
		// 如果是字符串常量相加,是 先拼接,然后在常量池中寻找,如果有就直接返回,
		// 否则,就开辟内存空间去创建。
		String str7 = "hello";
		String str8 = "world";
		String str9 = "helloworld";
		System.out.println(str9 == str7 + str8); // false
		System.out.println(str9.equals(str7 + str8)); // true
		
		System.out.println(str9 == "hello" + "world"); // true
		System.out.println(str9.equals("hello" + "world")); // true
		
		//通过反编译工具看源码发现,这里已经做了处理。
		System.out.println(str9 == "helloworld");
		System.out.println(str9.equals("helloworld"));
		
	}

}

7、字符串的判断功能

A:字符串的长度:public int length():返回此字符串的长度

B:字符串的判断功能:

(1)boolean equals(Object obj)

        比较字符串的内容是否相同,区分大小写

(2)boolean equalsIgnoreCase(String str)

        比较字符串的内容是否相同,不区分大小写

(3)boolean contains(String str)

        判断大字符串中是否包含小字符串

(4)boolean startsWith(String str)

        判断字符串是否以某个指定的字符串开头

(5)boolean endsWith(String str)

        判断字符串是否以某个指定的字符串结尾

(6)boolean isEmpty( )

        判断字符串是否为空

C:注意:要想调用方法,必须首先创建对象!

D:字符串内容为空:对象存在,但是内容是空的。    String s = "";

E:字符串对象为空:对象都不存在,何谈内容。       String s = null;

F:举例子:

package cn.itcast_03;

public class StringDemo {
	public static void main(String[] args) {
		String s1 = "helloworld";
		String s2 = "helloworld";
		String s3 = "HelloWorld";

		// boolean equals(Object obj)
		// 比较字符串的内容是否相同,区分大小写
		System.out.println("equals:" + s1.equals(s2));//true
		System.out.println("equals:" + s1.equals(s3));//false
		System.out.println("---------------");

		// boolean equalsIgnoreCase(String str)
		// 比较字符串的内容是否相同,不区分大小写
		System.out.println("equalsIgnoreCase:" + s1.equalsIgnoreCase(s2));//true
		System.out.println("equalsIgnoreCase:" + s1.equalsIgnoreCase(s3));//true
		System.out.println("---------------");

		// boolean contains(String str)
		// 判断大字符串中是否包含小字符串
		System.out.println("contains:" + s1.contains("hello"));//true
		System.out.println("contains:" + s1.contains("hw"));//false
		System.out.println("---------------");

		// boolean startsWith(String str)
		// 判断字符串是否以某个指定的字符串开头
		System.out.println("startsWith:" + s1.startsWith("hello"));//true
		System.out.println("startsWith:" + s1.startsWith("h"));//true
		System.out.println("startsWith:" + s1.startsWith("e"));//false
		System.out.println("---------------");

		// boolean endsWith(String str)
		// 判断字符串是否以某个指定的字符串结尾
		System.out.println("endsWith:" + s1.endsWith("world"));//true
		System.out.println("endsWith:" + s1.endsWith("ld"));//true
		System.out.println("endsWith:" + s1.endsWith("l"));//false
		System.out.println("---------------");

		// boolean isEmpty()
		// 判断字符串是否为空
		System.out.println("isEmpty:" + s1.isEmpty());//false
		System.out.println("isEmpty:" + s2.isEmpty());//false

		String s4 = "";
		String s5 = null;
		System.out.println("isEmpty:" + s4.isEmpty());//true
		//java.lang.NullPointerException:空指针异常
		//System.out.println("isEmpty:" + s5.isEmpty());//报错误!
		System.out.println("---------------");
	}

}










本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String类——判断功能 的相关文章

  • gets函数,C语言gets函数详解

    gets函数 C语言gets函数详解 在前面从键盘输入字符串是使用 scanf 和 s 其实还有更简单的方法 即使用 gets 函数 该函数的原型为 include
  • chatgpt错误:Sorry, you have been blocked

    ChatGPT报错 Sorry You Have Been Blocked 解决办法 换个节点 就可以
  • VMware虚拟设置机映射本地文件夹

    背景 宿主机其是Windows 虚拟机中是linux 操作 先确认虚拟机是关闭状态 susppend时无法修改属性 再修改虚拟机属性 操作如下 Edit virtual machine settings 编辑 options 属性 Shar
  • App专项测试测试有哪些?

    App专项测试的话 包含但不限于 弱网测试 干扰测试 兼容性测试 电量测试 流量测试 稳定性测试 安全测试和环境相关测试 第一 兼容性测试 针对App通常会考虑这些方面 1 操作系统版本 包括Andoird版本 iOS版本 2 屏幕分辨率
  • 手写轨迹识别数字

    使用自定义模板实现了手写识别 目前实现了纯数字的识别 后续正在开发英文数字的识别 中文识别暂未有计划 使用方法 获取笔迹 笔迹字段为数组 每个对象有3个值 x 笔迹的x值 y 笔迹的y值 action 动作 包含3个动作 down落笔 up
  • Centos 7 VNC配置及黑屏原因 (图文教程)

    Centos 7 VNC配置或安装的教程很多 鱼龙混杂 这里写一篇经过实践证明的真理配置方法 以正视听 Centos 7 安装VNC非常简单 要比Ubuntu简单多了 因为Ubuntu默认Unity桌面不支持VNC 1 关闭防火墙 syst
  • 前端开发——微信小程序

    1 安装 微信开发者工具 使用的开发平台为 微信开发者工具 点击此处链接 依次点击 工具 gt 下载 gt 稳定版更新日志 找到适合的版本 进行下载安装 2 注册微信小程序 注册微信小程序 点击注册链接 注意注册的是 小程序 根据注册提示完
  • [VB.NET]曲线的绘制!!!

    曲线的绘制 第一 在实验时需要把实时采集到的数据绘制成曲线图 再者 在数据处理时 需要把数据库中的数据 就是刚才实时采集到的数据点 以曲线图的形式在picturebox上显示出来 并且还要打印 请高手进来指点指点吧
  • 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(六)

    一 实体 Bean 每个持久化POJO类都是一个实体Bean 通过在类的定义中使用 Entity 注解来进行声明 声明实体Bean Entitypublic class Flight implements Serializable Long
  • 异步编程之Promise(2):探究原理

    异步编程系列教程 翻译 异步编程之Promise 1 初见魅力 异步编程之Promise 2 探究原理 异步编程之Promise 3 拓展进阶 异步编程之Generator 1 领略魅力 异步编程之Generator 2 剖析特性 异步编程
  • 搭建自己的Nuget Server服务器,并打包上传自己的程序包

    一 搭建自己的Nuget Server 1 VS先创建一个 空Web项目 Net版本建议采用4 6或以上 2 项目建好之后 引用 gt 右键 管理Nuget程序包 打开Nuget包管理器 安装 Nuget Server 包 3 Nuget
  • Js实现简单的计时器功能

    最近学习JavaScript的计时器功能 做了一个小案例 在此记录一下 需要的童鞋可以看一下 代码的缺点 是小时数部分计时样式没有做出来完整的显示 望海涵

随机推荐

  • python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

    基于爬虫技术的海量电影数据分析 介绍 一个基于爬虫技术的海量电影数据分析系统 系统架构 本系统主要分为四个部分 分别为后端爬虫抓取 数据处理分析可视化 GUI界面展示 启动运行 分别对应getData py pyec py GUI py m
  • 【2022天梯赛模拟赛】 题解(主python,261)

    2022天梯赛题解 主python 能261分 前几天不是刚模拟赛完吗 这次模拟赛pythonL1很多超时是我没想到的 快正赛了 赶紧把模拟赛题从头到尾过一遍 看一下没拿满分的问题出在哪里 折腾了一天终于能做的都做了理解了 为了加深记忆这边
  • Android NV21与I420数据旋转90°

    概述 现在图片数据存储方式大体上分为两种 RGB和YUV模型 RGB本篇不讲 YUV是根据一个亮度 Y分量 和两个色度 UV分量 来定义颜色空间 YUV采样可分为 YUV 4 4 4采样 每一个Y对应一组UV分量 一个YUV占8 8 8 2
  • .8布尔值、Null和Undefined

    一 布尔值 Boolean 只有两个值 返回值 二 Null Null类型的值只有一个 null 专门用来表示一个空的对象 返回值 三 Undefined Undefined类型的值只有一个 undefined 声明一个变量而不赋值则为该值
  • Django2 提示 "**" is not a registered namespace

    定义应用 student 的命名空间一般步骤 第一步 应用 student 的url py 文件添加如下代码 include 函数允许引用其他的 URLconf 每当 django 遇到 include 它会截取 URL 中匹配到的前面的部
  • 微信小程序发布代码步骤

    看图说话 1 在HBuilder X 点击发行 终端会显示发行成功 2 在微信开发者工具 会新打开一个页面 点击详情看下路径是不是 dist build 这才是压缩要发行 3 点击确定 根据自己需求改版本号等等信息 点击提交 4 浏览器打开
  • [电动智能汽车-2]:原理 - 纯电动汽车的基本安全与安全操作的基本流程

    目录 第1章 安全知识概述 1 1 碰撞保护 2 2 漏电检测 1 3 过流保护 1 4 高压互锁 第2章 安全保护措施 2 1 常见安全保护设备 2 2 高压部件 2 3 高压维修的流程 2 4 仪表盘故障监控 2 5 组合仪表指示灯 2
  • Vmware虚拟机一打开电脑就蓝屏的解决方法

    1 升级虚拟机版本 最好是最新版本 这个是本人以及身边人解决虚拟机蓝屏最多的办法 建议第一个尝试这个办法 2 关闭本电脑的Hyper V服务 3 启用和关闭windows功能 对话框 gt 虚拟机平台 选项打对勾 默认没勾选 gt 确定后重
  • WPF 自定义控件完成库容表盘显示效果

    先看一下显示效果 需要注意的地方有以下几点 表盘的刻度分部 长刻度和短刻度显示 在数值80W时 需要更改刻度盘的颜色渐变 在数值80W时 更改库容总数背景的显示 也是颜色渐变 刻度盘控件属性定义 刻度盘的定义 using Microsoft
  • Google Test源码浅析(二) -------- TEST宏

    一 TEST宏的定义 一个例子 TEST TestCaseName1 TestName1 cout lt lt hello1 lt lt endl
  • 使用pyfinance进行证券收益分析!金融界的一大帮手!

    pyfinance简介 在查找如何使用Python实现滚动回归时 发现一个很有用的量化金融包 pyfinance 顾名思义 pyfinance是为投资管理和证券收益分析而构建的Python分析包 主要是对面向定量金融的现有包进行补充 如py
  • Git简介与基本使用

    文章目录 一 Git简介 1 1产生历史 二 Git的安装与配置 三 创建一个版本库 四 版本创建与回退 4 1使用 4 2工作区和暂存区 4 2 1工作区 Working Directory 4 2 2版本库 Repository 4 3
  • Python3 输入和输出

    1 输出格式美化 Python两种输出值的方式 表达式语句和 print 函数 第三种方式是使用文件对象的 write 方法 标准输出文件可以用 sys stdout 引用 如果你希望输出的形式更加多样 可以使用 str format 函数
  • 关于AD如何按1:1比例保存成PDF的具体做法

    之前用AD09保存一个A4大小原理图 但是通过智能PDF导出的PDF不能按1 1比例占满A4纸 保存出来的PDF如图所示 现在需要把这个原理图保存成竖着占满整个A4纸 试了很多办法 网上也找了好久 有说在页面设置里面设置纸张方向 但是并没有
  • 【XSS漏洞05】XSS通关大挑战

    目录 1 实验简介 2 通关过程 2 0 通关前准备 2 1 关卡1 2 2 关卡2 2 3 关卡3 2 4 关卡4 2 5 关卡5 2 6 关卡6 2 7 关卡7 2 8 关卡8 2 9 关卡9 2 10 关卡10 2 11 关卡11 2
  • 关于如何将代码推到自己的gitee分支上去

    我的方法只是用于自己的推送 如果哪里有错希望大佬指正 第一步 找到自己项目的本地文件 在项目文件里点击自己的 Git bush here 唤醒控制台 第二步 初始化自己的git 输入git init 第三步 git config globa
  • Vscode格式化代码后 代码不自动换行

    在做项目的时候原本可以在一行可以清晰展示的代码 格式化后就多行展示 有点烦人 可以尝试加入以下代码试试 Vscode中找到设置 有2种方法 vscode gt 首选项 gt 设置 之后在出现的界面输入settings json 也可以在vs
  • c# 中重载WndProc,实现重写“最小化”自定义功能的方法

    code 1 复制代码 代码如下 private void Form1 SizeChanged object sender EventArgs e 最小化隐藏窗体 if this WindowState FormWindowState Mi
  • 关于在servlet中创建了cookie,但在jsp中无法读取到该cookie的问题(已解决)

    servlet中的代码 Cookie c new Cookie userlogin ul toString ul是一个实体类的实例 我重写了该类的toString 方法返回的将是 用户名 密码 的字符串 c setMaxAge 60 res
  • String类——判断功能

    String类 判断功能 断点设置 字符串 查看API文档 String类的构造方法 字符串的长度 内存结构图 断点设置 一般情况下 需要在每个方法的第一条有效语句设置断点 String类 0 String类所在的包 java lang 所