首页 > 编程语言 >java常用类String

java常用类String

时间:2022-08-18 17:12:42浏览次数:68  
标签:常用 java String s1 System 字符串 println out

java常用类String

理解String的不可变性

package com.zx.java;
import org.junit.Test;

/**
 * String的使用
 *
 * @author zx
 * @create 2022-08-17 18:00
 */
public class StringTest {
    /*
     string:字符串,使用一对""引起来表示。
     1.String声明为finaL的,不可被继承
     2.String实现了serializabLe接口:表示字符串是支持序列化的。
     3.实现了Comparable接口:表示String可以比较大小
     4.String内部定义了final char[ ] value用于存储字符串数据
     5.String:代表不可变的字符序列。简称:不可变性。
       体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。
           :2.当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值
           :3.当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值

     6.通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
     7.字符串常量池中是不会存储相同内容的字符串的。
*/
    @Test
    public void test1() {
        String s1 = "abc";//字面量
        String s2 = "abc";
       // s1 = "hello";

        System.out.println(s1 == s2);

        System.out.println(s1);
        System.out.println(s2);

        System.out.println("**********");

        String s3 = "abc";
        s3+="def";
        System.out.println(s3);
        System.out.println(s2);


        System.out.println("**********");
        String s4 = "abc";
        String s5 = s4.replace("a","m");
        System.out.println(s5);
        System.out.println(s4);


    }
}



String不同实例化方式的对比

/*
    String的实例化方式
    方式一:通过字面量定义的方式
    方式二:通过new+构造器的方式
     */
    @Test
    public void test2(){
        //通过字面量定义的方式:此时s1和s2的数据javaEE声明在方法区中的字符串常量池
        String s1 = "JAVAEE";
        String s2 = "JAVAEE";

        //通过new+构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟以后
        String s3 = new String("JAVAEE");
        String s4 = new String("JAVAEE");

        System.out.println(s1 == s2);//true
        System.out.println(s1 == s3);//false
        System.out.println(s1 == s4);//false
        System.out.println(s3 == s4);//false

    


经典面试题

String s = new string( "abc");方式创建对象,在内存中创建了几个对象?
两个:一个是堆空间中new结构
另一个是char[]对应的常量池中的数据: "abc"


String的常用方法

package com.zx.java2;
import org.junit.Test;

/**
 * @author zx
 * @create 2022-08-18 11:02
 */
public class StringMethodTest {
    /*
    int length():返回字符串的长度:return value.Length
    char charAt(int index):返回某索引处的字符return value[index]
    boolean isEmpty():判断是否是空字符串: return value.Length == 0
    string toLowercase():使用默认语言环境,将string中的所有字符转换为小写
    string toUppercase():使用默认语言环境,将String中的所有字符转换为大写
    string trim():返回字符串的副本,忽略前导空白和尾部空白
    boolean equals(object obj):比较字符串的内容是否相同
    boolean equalsIgnoreCase(String anotherString): 与equals方法类似,忽略大小写
    String concat(String str):将指定字符串连接到此字符串的结尾。等价于用*+”
    int compareTo(String anotherString):比较两个字符串的大小
    String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取
     */

    @Test
    public void test1() {
        String s1 = "HelloWorld";
        System.out.println(s1.length());
        System.out.println(s1.charAt(9));

        String s2 = "";
        System.out.println(s2.isEmpty());

        String s3 = s1.toLowerCase();//小写
        //toUppercase()大写
        System.out.println(s3);
        System.out.println(s1);

        String s4 = "   javaee   ";
        System.out.println(s4);
        System.out.println(s4.trim());//去空格
    }


    public void test2() {
        String s1 = "javaee";
        String s2 = "JAVAEE";
        System.out.println(s1.equals(s2));
        System.out.println(s1.equalsIgnoreCase(s2));//忽略大小写进行比较

        String s3 = "java";
        System.out.println(s3.concat("se"));

        String s4 = "abc";
        String s5 = new String("abe");
        System.out.println(s4.compareTo(s5));

        String s6 = "自学java第一个月";
        String s7 = s6.substring(2);
        System.out.println(s7);
        System.out.println(s6);

        String s8 = s6.substring(2, 6);
        System.out.println(s8);
    }


    /*
    boolean endswith(String suffix):测试此字符串是否以指定的后缀结束
    boolean startswith(String prefix):测试此字符串是否以指定的前缀开始
    boolean startswith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否
     */
    @Test
    public void test3() {
        String str1 = "HelloWorld";
        boolean b1 = str1.endsWith("ld");
        System.out.println(b1);

        boolean b2 = str1.startsWith("he");
        System.out.println(b2);

        boolean b3 = str1.startsWith("l", 2);
        System.out.println(b3);

        String str2 = "or";
        System.out.println(str1.contains(str2));

        System.out.println(str1.indexOf("lol"));
        System.out.println(str1.indexOf("ld", 5));

        String str3 = "hellorworld";
        System.out.println(str3.lastIndexOf("or"));

    }


    /*
    String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。
    string replace(CharSequence target,CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
    string replaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串。
    string replaceFirst(String regex,String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串。
     */
    @Test
    public void test4() {
        String str1 = "北京尚硅谷教育北京";
        String str2 = str1.replace("北", "东");
        System.out.println(str2);

    }


    /*
    boolean matches(String regex):告知此字符串是否匹配给定的正则表达式
    Stringsplit(String regex):根据给定正则表达式的匹配拆分此字符串。
    Stringsplit(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过liml个,如果超过了,剩下的全部都放到最后一个元素中
     */
    @Test
    public void test5() {
        String str = "hello/world/java";
        String [] strs = str.split("/");
        for (int i = 0; i <strs.length ; i++) {
            System.out.println(strs[i]);
        }

    }
}


String类型与基本数据类型,包装类的转换

package com.zx.java2;
import org.junit.Test;

/**
 * @author zx
 * @create 2022-08-18 14:57
 */
public class StringTest {
    /*
    String与基本数据类型,包装类之间的转换

    String--->基本数据类型,包装类:调用包装类的静态方法:parseXxx(str)
    基本数据类型,包装类--->String:掉用String.valueOf(xxx);
     */
    @Test
    public void test(){
        String s1 = "123";
        int num = Integer.parseInt(s1);
        System.out.println(num + 2);

        int num1 = 23;
        String str2 = String.valueOf(num1);
        System.out.println(str2);
        String str3 = num1 + "";//这种方式也可以转换为String
        System.out.println(s1 == str3);//false

    }
}


String和char[]的转换

package com.zx.java2;
import org.junit.Test;

/**
 * @author zx
 * @create 2022-08-18 15:08
 */
public class StringTest2 {
    /*
    String 与 char[]之间的转换
    String--> char[] :String的toCharArray()
    char[]--> String :直接把char数组放入到String构造器中

     */
    @Test
    public void test(){
        String str1 = "abc123";
        char[] chars = str1.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

        char[] char2 = new char[]{'h','e','l','l','o'};
        String str2 = new String(char2);
        System.out.println(str2);

        for (int i = chars.length-2; i > 0; i--) {
            System.err.print(chars[i]);
        }


    }

    @Test
    public void test2(){
        String str1 = "abc123";
        char[] chars = str1.toCharArray();

        for ( int i= 0; i < chars.length/2; i++) {
            if(i == 0 || i == chars.length-1){
            }else{
                char temp = chars[i];
                chars[i] = chars[chars.length-i-1];
                chars[chars.length-i-1] = temp;
            }
            }
        System.out.println(chars);

        }
    }



标签:常用,java,String,s1,System,字符串,println,out
From: https://www.cnblogs.com/zxyyds/p/16599380.html

相关文章

  • day.js 常用方法
    文档地址(中文) Day.js是一个轻量的JavaScript时间日期处理库,和Moment.js的API设计保持完全一样.如果你曾经用过Moment.js,那么你已经知道如何使用Day.j......
  • JavaWeb 开发入门
    原文:JavaWeb学习总结(一)——JavaWeb开发入门一、基本概念1.1、Web开发的相关知识Web,在英语中Web即表示网页的意思,它用于表示Internet主机上供外界访问的资源......
  • Java常用类
    Object和Objects类toString()方法用来返回当前对象本身的有关信息,默认的是返回对象所在的类名和哈希码的16进制表示。一般需要重写toString()方法获取该对象的字段名和值......
  • macOS最强Java开发分析软件JProfiler for Mac中文永久版
    mac软件下载:https://mac.macxf.com/mac/808.html?id=NjU2MTE%3DJProfiler11破解版可以快速的帮助用户这进行使用的过程中,分析出您的操作错误这存在的错误,以此让开发者进......
  • String与StringBuilder相互转换以及获取字符串中第一个中文汉字
    String与StringBuilder相互转换1.StringBuilder转为StringStringBuildersb=newStringBuilder();sb.append("hello");Strings=sb.toString();2.String......
  • 【Java基础】二进制的三种形式:原码、反码、补码
    1.二进制的三种形式原码:数值的二进制,最高位是符号位负数的反码:对原码按位取反,最高位确定为1负数的补码:反码+1计算机以二进制补码的形式保存所有的整数正数的原码、反......
  • 从XXE漏洞修复引起Not supported: http://javax.xml.XMLConstants/property/accessExt
    引子 在使用Fortify扫描时代码报XMLExternalEntityInjection,此漏洞为xml实体注入漏洞,XXE攻击可利用在处理时动态构建文档的XML功能。修复方案也包含了增加安全......
  • 【Java基础】二、八、十、十六进制
    1.进制是什么我们平常遇到的数字0、1、2、3...9,9再加1满10进1,得到10,这些数就表示十进制数。(decimal)同样的满2进1就表示二进制(binary)。满8进1就表示八进制(octal)。满16进......
  • java的char类型
    一、Char介绍字符型数据类型。用于存放单个字符。用单引号【''】括住2字节,16位。char在java中是16位,因为java用的是Unicode。一个16位的编码所能产生的字符只有65536个。U......
  • java stopwatch 使用
    publicclassProgram{publicstaticvoidmain(String[]args)throwsInterruptedException{varsw=newStopWatch("模板测试");sw.start......