java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)作者:王可利(Star·星星)
String的使用
1.在内存中是如何保存字符串。
== :比较的是地址(引用数据类型) equals:比较的是两个字符串的值
没通过new对象创建字符串:(这样就没有地址,常量区把地址和值传过去)
字符串是保存在字符串常量池(常量区),当你需要给一个字符串变量赋值的时候,先到字符串常量池中查找。
如果没有就在这个常量池中创建一个,将地址赋值给字符串变量,如果有就不再创建,将地址给变量。
通过new对象创建字符串:(new一个就是自己有了地址了,只把值传过去)
字符串是保存在字符串常量池(常量区),当你需要给一个字符串变量赋值的时候,先到字符串常量池中查找。
如果没有就在这个常量池中创建一个,将值赋值到堆中的对象中。
字符串比较小技巧(用字符串常量和变量做比较,不是变量和字符串常量做比较,有时候变量是空的就会出错)
如果空的对象发送了消息就会空指针异常,因为有时候不知道变量是否为空,这样比较会比较保险一点
1 package study; 2 3 public class star { 4 public static void main(String[] args) { 5 6 //1.内存中是如何保存字符串的 7 String s1 = "abc"; 8 String s2 = "abc"; 9 String s3 = new String("abc"); 10 String s4 = new String("abc"); 11 12 System.out.println(s1 == s2);//true 13 System.out.println(s1 == s3);//false 14 System.out.println(s3 == s4);//false 15 System.out.println(s2.equals(s4));//true 16 //== :比较的是地址(引用数据类型) equals:比较的是两个字符串的值 17 /* 18 * 没通过new对象创建字符串:(这样就没有地址,常量区把地址和值传过去) 19 * 字符串是保存在字符串常量池(常量区),当你需要给一个字符串变量赋值的时候,先到字符串常量池中查找。 20 * 如果没有就在这个常量池中创建一个,将地址赋值给字符串变量,如果有就不再创建,将地址给变量。 21 * 22 * 通过new对象创建字符串:(new一个就是自己有了地址了,只把值传过去) 23 * 字符串是保存在字符串常量池(常量区),当你需要给一个字符串变量赋值的时候,先到字符串常量池中查找。 24 * 如果没有就在这个常量池中创建一个,将值赋值到堆中的对象中。 25 * */ 26 27 //字符串比较小技巧(用字符串常量和变量做比较) 28 String s = "java"; 29 s = null;//如果空的对象发送了消息就会空指针异常,因为有时候不知道变量是否为空,这样比较会比较保险一点 30 31 // if (s.equals("java")) { 32 // System.out.println("我在学习java"); 33 // } 34 if ("java".equals(s)) { 35 System.out.println("我在学习java"); 36 } 38 } 39 }
字符串的构造方法
1.String(byte[] bytes) 通过字节数组来创建。
2.String(byte[] bytes,int offset,int length); // 获取索引开始到 这个长度的打印
第一个参数:字符的byte的数 第二个参数:开始的byte的索引 第三个参数:长度
3.String(char[] vaule) // 需要传递一个字符类型的数组
4.String(char[] int offset,int length);
5.String(String original) 可以直接指定传一个字符串进来
1 package study; 2 3 public class star { 4 public static void main(String[] args) { 5 6 //1.String(byte[] bytes) 通过字节数组来创建。 7 byte[] b = {97,98,99}; 8 String s1 = new String(b); 9 System.out.println(s1);//打印了abc 阿斯克码 Ascll 10 11 //2.String(byte[] bytes,int offset,int length); 12 //第一个参数:要解码为字符的byte 第二个参数:要解码的第一个byte的索引 第三个参数:要解码的byte数 13 String s2 = new String(b,1,2); 14 System.out.println(s2); 15 16 //3.String(char[] vaule) // 需要传递一个字符类型的数组 17 //字符是可以是中文的: 一个字符一个字符的 18 char[] c = {'明','天','周','六','但','是','要','上','课'}; 19 String s3 = new String(c); 20 System.out.println(s3);//明天周六但是要上课 21 22 //4.String(char[] int offset,int length); 23 String s4 = new String(c,2,4); 24 System.out.println(s4);//周六但是 25 } 26 }
字符串的方法
字符串获取方法
1.int length() 获取字符串的长度
2.char charAt(int index) 获取特定位置的字符(注意角标越界问题)
3.int indexOf(String str) 获取特定字符的位置(overload)
4.int lastIndexOf(int ch) 获取最后一个字符的位置
1 public class star { 2 public static void main(String[] args) { 3 4 //1.int length() 获取字符串的长度 5 //2.char charAt(int index) 获取特定位置的字符(注意角标越界问题) 6 //3.int indexOf(String str) 获取特定字符的位置(overload) 7 //4.int lastIndexOf(int ch) 获取最后一个字符的位置(字符的整体) 8 9 System.out.println("abcd".length());//打印4 字符串长度获取方法 10 System.out.println("abcd".charAt(2));//打印c 注意索引值不要超出数组 11 System.out.println("abcdabcd".indexOf("c"));//按照0.1.2...来排,只返回第一个出现的位置 打印2 12 System.out.println("abcadabcd".indexOf("c",2));//打印2 参数1:原字符串西药搜素的字符串,参数2:从哪个位置开始搜索,包含这个位置。 13 System.out.println("abcadabcd".indexOf("k"));//如果没有找到就返回一个负数 -1 14 System.out.println("abcadabcad".lastIndexOf("cad"));//0.1.2...打印的是7 这里是最后一个cad 出现的开始索引。 15 } 16 }
字符串判断的方法
判断方法 : 判断方法返回的是boolean类型的数据
1.boolean endsWith(String str) 是否以指定字符结束
2.boolean isEmpty() 判断字符串是否为空(实际上是判断长度是否为0,如果是就是空)
3.boolean contains(CharSequence s) 是否包含指定序列 应用:搜索 如:用来搜索指定的字符串,字符串中是否存在这个字符串
4.boolean equals(Object anObject) 比较字符串是否相等
5.boolean equalsIgnoreCase(String anotherString) 忽略大小写 比较字符串是否相等
1 package study; 2 3 public class star { 4 public static void main(String[] args) { 5 6 //1.boolean endsWith(String str) 是否以指定字符结束 7 //2.boolean isEmpty() 判断字符串是否为空(实际上是判断长度是否为0,如果是就是空) 8 //3.boolean contains(CharSequence s) 是否包含指定序列 应用:搜索 如:用来搜索指定的字符串,字符串中是否存在这个字符串 9 //4.boolean equals(Object anObject) 比较字符串是否相等 10 //5.boolean equalsIgnoreCase(String anotherString) 忽略大小写 比较字符串是否相等 11 12 //文件上传:上传的图片:png,jpg,jpeg 13 String s = "D:/image/01.jpg"; 14 if (s.endsWith("jpg")) { 15 System.out.println("图片上传成功");//打印了这个 16 }else { 17 System.out.println("不能上传该类型的图片"); 18 } 19 20 //判断字符串是否为空(实际上是判断长度是否为0,如果是就是空) 21 if ("".isEmpty()) { 22 System.out.println("字符串为空null");//打印了 23 } 24 25 //boolean contains(CharSequences)//用来搜索指定的字符串,字符串中是否存在这个字符串 26 //CharSequence 是一个接口,不能创建对象,只能拿实现了他的子类来用,String 就在里面。 27 String s1 = "javahtmlphp"; 28 if (s1.contains("html")) { 29 System.out.println("可以来学习html");//打印了 30 } 31 32 //equals、equalsIgnoreCase(忽略大小写) 33 System.out.println("abcd".equals("ABCD"));//false 34 System.out.println("abcd".equalsIgnoreCase("ABCD"));//ture 35 } 36 }
字符串转换的方法
1.Static String valueOf(char[] data)
2.static String valueOf(char[] data, int offset, int count)
3.char[] toCharArray() 将字符串转换为字符数组
package study; public class star { public static void main(String[] args) { //1.Static String valueOf(char[] data) 把各类型转成字符串 //2.static String valueOf(char[] data, int offset, int count) //3.char[] toCharArray() 将字符串转换为字符数组 char[] c = {'好','好','学','习'}; System.out.println();///将字符数组变字符串 //valueOf(char[] data, int offset, int count) //从指定的位置,长度来转 System.out.println(String.valueOf(10));//把 int 类型转字符串 还可以是其他的类型 //将字符串转成字符数组 String s = "abcd"; char[] c1 = s.toCharArray(); for (char ch : c1) {//增强数组遍历 (类型 变量名 :数组名) System.out.println(ch); } //将字符串转为基本数据类型 String s1 ="10"; Integer i = new Integer(s1); //intger:包装类型 ,创建包装对象之后再接收 Float ,Double int a = i.intValue(); System.out.println("int类型"+a); double d = i.doubleValue(); System.out.println("double类型"+d); } }
字符串其他的方法
1.String replace(char oldChar, char newChar) 替换
2.String[] split(String regex) 切割
3.String substring(int beginIndex)
4.String substring(int beginIndex, int endIndex)截取字串
5.String toUpperCase() 转大写
6.String toLowerCase() 转小写
7.String trim() 去除空格
1 package study; 2 3 public class star { 4 public static void main(String[] args) { 5 //String replace(char oldChar, char newChar) 替换 6 //String[] split(String regex) 切割 7 //String substring(int beginIndex) 8 //String substring(int beginIndex, int endIndex)截取字串 9 //String toUpperCase() 转大写 10 //String toLowerCase() 转小写 11 //String trim() 去除空格 12 13 14 //交换两个字符 15 String s = "星星一号字符串"; 16 String newString = s.replace("字符串","玩彩虹");//前面是你需要替换的字符,后面是你要替换成的新的字符 17 System.out.println(newString); 18 String newString1 = s.replace("一","二"); 19 System.out.println(newString1); 20 21 //切割字符串 22 String s1 = "a-b-c-d"; 23 String[] strarr = s1.split("-"); 24 for(String str:strarr){ 25 System.out.println(str); 26 } 27 28 //String substring(int beginIndex) 截取字符串 29 String s3 = "abcdef"; 30 // s3 = s3.substring(3);//从这个索引开始到结束 31 // System.out.println(s3); 32 s3 = s3.substring(2, 5);//第二个开始 到第五个结束不包含尾部。如:0123456 (2,5)打印的就是 2.3.4.不包含尾部 33 System.out.println(s3); 34 35 //转换大小写 36 System.out.println("abc".toUpperCase());//大写 37 System.out.println("aBc".toLowerCase());//小写 38 39 //去除空格 40 String s4 = " java html "; 41 s4 = s4.trim();//去除头尾的空格 42 System.out.println(s4); 43 } 44 }