String类

创建字符串对象的2种方式:

1、直接使用 " " 定义。(推荐方式)。

String name = "小王";

2、通过String类的构造器创建对象。

(1)public String():创建一个空白字符串对象,不含有任何内容(几乎不用)。

        //s1 = " "
        String s1 = new String();
        System.out.println(s1);

 

(2)public String(String):根据传入的字符串内容,来创建字符串对象(几乎不用)。

        String s2 = new String("小王子");
        System.out.println(s2);

 

(3)public String (char[] c):根据字符数组的内容,来创建字符串对象。

char[] chars = {'a' ,'b', '', ''};
String s3 = new String(chars);

 

(4)public String(byte[] b):根据字节数组的内容,来创建字符串对象。

        byte[] bytes = {97, 98 ,99};
        String s4 = new String(bytes);

 

有什么区别?

1、以 "" 方式给出字符串对象,在字符串常量存储,而且相同内容只会在其中存储一份。

2、通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。

     例:

复制代码
1         String ss1 = "abc";
2         String ss2 ="abc";
3         System.out.println(ss1 == ss2);//ture
4 
5         char[] chars1 = {'a', 'b', 'c'};
6         String ss3 = new String(chars1);
7         String ss4 = new String(chars1);
8         //因为地址不一样,所以不相同
9         System.out.println(ss3 == ss4);//false
复制代码

 

 

String常见面试题:

1、

1          //new了两个对象,“”给出的会放在常量池, new出来的会放在堆内存
2         String s5 = new String("abc");
3         //这个创建了0个,因为常量池有了“abc”
4         String s6 = "abc";
5         System.out.println(s5 == s6);//false

 

2、

复制代码
 1         //s8它是变量,只有在运行的时候才会去分配变量空间的地址
 2         String s7 = "abc";
 3         String s8 = "ab";
 4         String s9 = s8 + "c";
 5         System.out.println(s7 = s9);//flase
 6 
 7         System.out.println("-------------");
 8         
 9         //java存在编译优化机制,程序在编译时"a" + "b" + "c" 会直接转换成“abc”
10         String sss1 = "abc";
11         String sss2 = "a" + "b" + "c";
12         System.out.println("sss1 = sss2");//ture
复制代码

 

 

String常用API

 

字符串不适合用 ==比较,因为这样是比较的地址。

所以我们可以用String提供的equals方法比较

什么时候适合用==比较数据,基本数据类型比较时使用。

例子:

复制代码
 1  //正确的账号和密码
 2         String okname = "xiaowang";
 3         String okpassword = "123456";
 4 
 5         //用户输入
 6         Scanner scanner = new Scanner(System.in);
 7         //用户输入账号
 8         System.out.println("账号:");
 9         String name = scanner.next();
10 
11         //用户输入密码
12         System.out.println("密码:");
13         String password = scanner.next();
14 
15         //判断输入是否正确
16         if (okname.equals(name) && okpassword.equals(password)){
17             System.out.println("登录成功!");
18         }else{
19             System.out.println("账号或密码错误!");
20         }
21 
22         //忽略大小写比较内容的API:一般用于验证码
23         String okSode = "123A";
24 
25         System.out.println("验证码为123A,请输入:");
26         String sode = scanner.next();
27 
28         if (okSode.equalsIgnoreCase(sode)){
29             System.out.println("验证码正确!");
30         }else{
31             System.out.println("验证码错误!");
32         }
33         scanner.close();
34     }
35 }
复制代码

 

posted @   小王同学学编程  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
levels of contents
点击右上角即可分享
微信分享提示