Java面向对象-String类
1,实例化String对象
有两种方式,我们直接看代码:
1 package com.java1234.chap03.sec08; 2 3 public class Demo1 { 4 5 public static void main(String[] args) { 6 // 实例化String的方式一 7 String name1="张三"; 8 System.out.println("name1="+name1); 9 10 // 实例化String的方式二 11 String name2=new String("李四"); 12 System.out.println("name2="+name2); 13 } 14 }
运行输出:
name1=张三
name2=李四
2,“==”VS“equals方法”
“==” 比较的是引用(是否指向同一个内存块) “equals”比较的是具体内容
我们上下代码:
1 package com.learn.chap03.sec06; 2 3 public class Demo2 { 4 5 public static void main(String[] args) { 6 String name1="张三"; // 直接赋值方式 7 String name2=new String("张三"); // new方式 8 String name3=name2; // 传递引用 9 String name4="张三"; 10 String name5 = new String("张三"); 11 12 // ==比较的是引用 13 System.out.println("name1==name2:"+(name1==name2)); 14 System.out.println("name1==name3:"+(name1==name3)); 15 System.out.println("name2==name3:"+(name2==name3)); 16 System.out.println("name1==name4:"+(name1==name4)); 17 System.out.println("name5==name3:"+(name5==name3)); 18 19 // equals比较的是具体内容 20 System.out.println("name1.equals(name2):"+(name1.equals(name2))); 21 System.out.println("name1.equals(name3:"+(name1.equals(name3))); 22 System.out.println("name2.equals(name3):"+(name2.equals(name3))); 23 System.out.println("name1.equals(name4):"+(name1.equals(name4))); 24 System.out.println("name2.equals(name5):"+(name2.equals(name5))); 25 } 26 }
运行结果:
name1==name2:false
name1==name3:false
name2==name3:true
name1==name4:true
name5==name3:false
name1.equals(name2):true
name1.equals(name3:true
name2.equals(name3):true
name1.equals(name4):true
name2.equals(name5):true
我们给下内存提示:
3,String两种实例化方式的区别
直接赋值方式,创建的对象存放到字符串对象池里,假如存在的,就不会再创建;
new对象方式,每次都创建一个新的对象;
我们上一个示例:
1 package com.java1234.chap03.sec08; 2 3 public class Demo3 { 4 5 public static void main(String[] args) { 6 String name1="张三"; 7 String name2="张三"; 8 String name3=new String("张三"); 9 String name4=new String("张三"); 10 11 System.out.println("name1==name2:"+(name1==name2)); 12 System.out.println("name1==name3:"+(name1==name3)); 13 System.out.println("name3==name4:"+(name3==name4)); 14 } 15 16 }
运行输出:
name1==name2:true
name1==name3:false
name3==name4:false
我们给下内存示意图:
4,字符串的内容不可变性
字符串的特性:不能改变字符串的内容;
要想改变,只能通过指向一个新的内存地址;
我们给下代码:
1 package com.java1234.chap03.sec08; 2 3 public class Demo4 { 4 5 public static void main(String[] args) { 6 String name="张"; 7 name+="三"; 8 System.out.println(name); 9 } 10 }
这里我们修改了name,本质的话name指向了一个新的内存区域,我们给下内存示意图:
String类常用方法及基本使用
我们首先来学习基本使用Jdk api chm文档:
我们这里推荐使用1.6 是中文的。下载地址:http://www.java1234.com/a/javaziliao/shuji/2013/0506/355.html
里面的方法主要是经常查并使用,熟练应用即可。
我们双击打开:
我们点击 左上角 显示:
输入String 搜索 然后我们会在右侧找到String类的描述,可以查到String类的所有信息 包括描述 方法 属性;
这里介绍一些String类的常用方法:
1, char chartAt(int index) 返回指定索引处的char值
这里的index 是从0开始的;
我们先上下实例:
1 package com.java1234.chap03.sec08; 2 3 public class Demo5 { 4 5 public static void main(String[] args) { 6 String name="张三"; 7 char ming=name.charAt(1); 8 System.out.println(ming); 9 10 String str="我是中国人"; 11 for(int i=0;i<str.length();i++){ 12 System.out.println(str.charAt(i)); 13 } 14 } 15 }
运行输出:
三
我
是
中
国
人
2,int length() 返回字符串的长度;
在前面一个例子里我们已经演示了;
3,int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
1 package com.java1234.chap03.sec08; 2 3 public class Demo06 { 4 5 public static void main(String[] args) { 6 // indexOf方法使用实例 7 String str="abcdefghijdklmoqprstuds"; 8 System.out.println("d在字符串str中第一次出现的索引位置:"+str.indexOf('d')); 9 System.out.println("d在字符串str中第一次出现的索引位置,从索引4位置开始:"+str.indexOf('d',4)); 10 } 11 }
4,String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
1 package com.java1234.chap03.sec08; 2 3 public class Demo07 { 4 5 public static void main(String[] args) { 6 // substring方式读取 7 String str="不开心每一天"; 8 String str2="不开心每一天,不可能"; 9 String newStr=str.substring(1); 10 System.out.println(newStr); 11 String newStr2=str2.substring(1, 6); 12 System.out.println(newStr2); 13 } 14 }
5,public String toUpperCase() String 中的所有字符都转换为大写
1 package com.java1234.chap03.sec08; 2 3 public class Demo08 { 4 5 public static void main(String[] args) { 6 String str="I'm a boy!"; 7 String upStr=str.toUpperCase(); // 转成大写 8 System.out.println(upStr); 9 String lowerStr=upStr.toLowerCase(); // 转成小写 10 System.out.println(lowerStr); 11 } 12 }