zoukankan      html  css  js  c++  java
  • 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

    里面的方法主要是经常查并使用,熟练应用即可。

    我们双击打开:

    1.jpg

    我们点击 左上角 显示:

    2.jpg

    输入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 }
  • 相关阅读:
    栈的压入、弹出序列
    HM代码分析--TAppEncoder
    HM代码分析--TAppDecoder
    包含min函数的栈
    GMOJ 6841. 【2020.11.5提高组模拟】淘淘蓝蓝之树 林
    【2020.11.5提高组模拟】总结
    dsu on tree学习总结 (树上启发式合并)
    GMOJ 6847. 【2020.11.03提高组模拟】通往强者之路
    2020.11.03【NOIP提高A组】模拟
    【2020.11.02提高组模拟】总结
  • 原文地址:https://www.cnblogs.com/eaglezb/p/5970776.html
Copyright © 2011-2022 走看看