Java基础之常用类(String类)
String 类
定义
- String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。我们可以将字符串看作是String, 但是严格意义上来说, String还是一个类,只是比较特殊罢了
特殊性
- String 类型的变量可以引用地址
- String 类型的变量可以直接指向常量
- String 对象的长度是不可变的,如果两个字符串拼接成一个字符串,其实是创建了一个新的字符串对象
public static void main(String[] args) {
String str = new String();// 指向地址值 new对象相当于指向一个新地址
String str2 = "abc"; //指向常量
}
常用的构造方法
- public String():空构造
- public String(byte[] bytes):把字节数组转成字符串
- public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
- public String(char[] value):把字符数组转成字符串
- public String(char[] value,int index,int count):把字符数组的一部分转成字符串
- public String(String original):把字符串常量值转成字符串
- 测试题
- 判断定义为String类型的s1和s2是否相等?
- String s1 = "abc";
- String s2 = "abc";
- System.out.println(s1 == s2);
- System.out.println(s1.equals(s2));
- 下面这句话在内存中创建了几个对象?
- String s1 = new String("abc");
- 答案: 创建了两个看对象,一个在常量池,一个在堆内存
- String s1 = new String("abc");
- 判断定义为String类型的s1和s2是否相等
- String s1 = new String("abc");
- String s2 = "abc";
- System.out.println(s1 == s2);
- System.out.println(s1.equals(s2));
- 判断定义为String类型的s1和s2是否相等?
- String s1 = "a" + "b" + "c";
- String s2 = "abc";
- System.out.println(s1 == s2);
- System.out.println(s1.equals(s2));
- 判断定义为String类型的s1和s2是否相等?
- String s1 = "ab";
- String s2 = "abc";
- String s3 = s1 + "c";
- System.out.println(s3 == s2);
- System.out.println(s3.equals(s2));
- 判断定义为String类型的s1和s2是否相等?
常用的判断方法
boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
boolean contains(String str): 判断大字符串中是否包含小字符串
boolean startsWith(String str): 判断字符串是否以某个指定的字符串开头
boolean endsWith(String str): 判断字符串是否以某个指定的字符串结尾
boolean isEmpty(): 判断字符串是否为空
案例
- 需求:模拟登录,给三次机会,并提示还有几次。
- 用户名和密码都是admin
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 1;
while(i<=3){
System.out.println("请输入用户名");
String name = scanner.nextLine();
System.out.println("请输入密码");
String password = scanner.nextLine();
if("admin".equals(name)&&"admin".equals(password)){
System.out.println("恭喜您,登录成功");
break;
}
System.out.println("用户名或密码错误,请您重新输入,您还有"+(3-i)+"次机会机会");
i++;
}
scanner.close();
}
测试题
- 查询一个某个班级中所有姓张的学生
- String[] strs = {"李张蛋","张三","张飞","李伟","刘明"};
常用的获取方法
int length(): 获取字符串的长度
char charAt(int index): 获取指定索引位置的字符
int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引, ch是字符的码表值
int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引
int indexOf(int ch,int fromIndex): 返回指定字符在此字符串中从指定位置后第一次出现处的索引
int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引
int lastIndexOf 同上
String substring(int start):从指定位置开始截取字符串,默认到末尾
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串
案例
- 需求:遍历字符串
public static void main(String[] args) {
String str = "abcdkekdkgallsd";
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
}
}
测试题
- 需求:不准使用charAt(),遍历字符串
常用的转换方法
byte[] getBytes(): 把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转成字符串
static String valueOf(int i):把int类型的数据转成字符串
注意:String类的valueOf方法可以把任意类型的数据转成字符串
String toLowerCase():把字符串转成小写(了解)
String toUpperCase():把字符串转成大写
String concat(String str):把字符串拼接
案例
- 需求:把一个字符串的首字母转成大写,其余为小写
public static void main(String[] args) {
String str = "abCdkeHgDlsd";
String str2 = str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase());
System.out.println(str2);
}
替换方法
- String replace(char old,char new) : 将字符串中的一部分字符用新的代替
- String replace(String old,String new) : 将字符串中的一部分字符串用新的代替
切割方法
- String[] split(String regex) : 按照规则来切割字符串
- String[] split(String regex, int limit) : 按照规则来切割字符串 limit 表示总共切成几段(也就是数组的长度)
其他常用方法
- trim() : 去除字符串前后的空格
- int compareTo(String anotherString) : 按字典顺序比较两个字符串(大小写)
- int compareToIgnoreCase(String str) : 按字典顺序比较两个字符串(忽略大小)
Java基础之常用类(String类)的更多相关文章
- java基础源码 (1)--String类
这个是String类上面的注释,我用谷歌翻译翻译的,虽然有点语法上的问题,但是大概都可以翻译出来 /** * The {@code String} class represents character ...
- java基础类型数据与String类包装类之间的转换与理解
数据类型转换一般分为三种: 在java中整型,实型,字符型视为简单数据类型,这些数据类型由低到高分别为:(byte,short,char--int-long-float-double) 简单数据类型之 ...
- 【Java基础】常用类
常用类 字符串相关的类 String类:代表字符串,使用一对 "" 引起来表示. public final class String implements java.io.Seri ...
- Java 常用类String类、StringBuffer类
常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...
- Java常用API(String类)
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...
- Java基础-类加载机制与自定义类Java类加载器(ClassLoader)
Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...
- Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...
- Java 1.7.0_06中String类内部实现的一些变化【转】
原文链接: java-performance 翻译: ImportNew.com- 夏千林译文链接: http://www.importnew.com/7656.html ChangeLog: 201 ...
- java基础解析系列(九)---String不可变性分析
java基础解析系列(九)---String不可变性分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---In ...
- C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;
ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口: 2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...
随机推荐
- Python实现改进后的Bi-RRT算法实例
Python实现改进后的Bi-RRT算法实例 1.背景说明 以下代码是参照上海交通大学海洋工程国家重点实验室<基于改进双向RRT的无人艇局部路径规划算法研究>的算法思想实现的. 2.算法流 ...
- Stanford CoreNLP无法生成实例对象
在服务器上运行Stanford,今日无法启动"StanfordCoreNLP"了,就是运行下面代码一直在运行,不结束,不报错. from stanfordcorenlp impor ...
- IDEA对数据库、表、记录的(增删改查可视化操作)、数据库安全性问题的演示
对数据库的增删改查 新增数据库 修改数据库 删除数据库 对表的增删改查 新增表 修改表 删除表 对记录的增删改查 数据库安全性问题的演示 演示脏读 一个事物里面读到了另外一个事物没有提交的数据: ...
- .NET性能系列文章一:.NET7的性能改进
这些方法在.NET7中变得更快 照片来自 CHUTTERSNAP 的 Unsplash 欢迎阅读.NET性能系列的第一章.这一系列的特点是对.NET世界中许多不同的主题进行研究.比较性能.正如标题所说 ...
- 2.asyncio快速上手
事件循环:可以理解成一个死循环,去检测并执行某些代码 import asyncio # 去生成或者获取一个事件循环 loop = asyncio.get_event_loop() # 将任务放到事 ...
- AngouriMath: 用于C#和F#的开源跨平台符号代数库
AngouriMath是一个MIT协议开源符号代数库.也就是说,通过AngouriMath,您可以自动求解方程.方程组.微分.从字符串解析.编译表达式.处理矩阵.查找极限.将表达式转换为LaTeX,以 ...
- C# 8.0 添加和增强的功能【基础篇】
.NET Core 3.x和.NET Standard 2.1支持C# 8.0. 一.Readonly 成员 可将 readonly 修饰符应用于结构的成员,来限制成员为不可修改状态.这比在C# 7. ...
- Transformer 结构分析
self-attetion 1. 输入 \[X = EmbeddingLookup(X) + PositionalEncoding \\ X.shape == (batch\_size, seq\_l ...
- C# 语法分析器(二)LR(0) 语法分析
系列导航 (一)语法分析介绍 (二)LR(0) 语法分析 (三)LALR 语法分析 (四)二义性文法 (五)错误恢复 (六)构造语法分析器 首先,需要介绍下 LALR 语法分析的基础:LR(0) 语法 ...
- maven-入门到入土
详情见代码重工:连接http://heavy_code_industry.gitee.io/code_heavy_industry/pro002-maven/