java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)

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 }

 

posted @ 2016-12-07 16:57  王可利(Star·星星)  阅读(689)  评论(0编辑  收藏  举报