zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    linux挂载ntfs格式的U盘
    linux tar命令
    chown chmod chgrp chattr chroot usermod 命令简单分析
    UI/UE/ID/UED/UCD的区别(转)
    搭建 Docker Swarm 集群
    端口
    linux crontab 定时任务
    centos8 安装 docker
    history 用法大全
    PHP生成正则表达式的类
  • 原文地址:https://www.cnblogs.com/StarKL/p/6141877.html
Copyright © 2011-2022 走看看