栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础题目(java常用实用类知识点)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础题目(java常用实用类知识点)

前言:本次回顾Java基础中的常用类String的知识点,JDK版本为1.8,使用单元测试运行程序。

1.String的内存解析:

package com.yan.commonClass;

import org.junit.Test;


public class StringTest {
    
    @Test
    //验证String的不可变性
    public void test(){
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2); //true:此时s1和s2指向同一内存空间
        s1 = "hello"; //重新开辟了内存空间
        System.out.println(s1); //hello
        System.out.println(s2); //abc
        System.out.println("-------------");
        String s3 = "abc";
        s3 += "def"; //重新开辟了内存空间
        System.out.println(s3); //abcdef
        System.out.println(s2); //abc
        System.out.println("-------------");
        String s4 = "abc";
        String s5 = s4.replace('a','m');
        System.out.println(s4); //abc
        System.out.println(s5); //mbc
    }

    @Test
    
    public void test1(){
        //通过字面量的方式:此时s1和s2的数据abc声明在方法区中的字符串常量池中
        String s1 = "abc";
        String s2 = "abc";
        //通过new+构造器:此时的s3和s4保存的地址值,是数据在堆空间开辟空间以后对应的地址值
        String s3 = new String("abc");
        String s4 = new String("abc");

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

        System.out.println("-----------------");
        Person p1 = new Person("Tom", 16);
        Person p2 = new Person("Tom", 16);
        //此时的equals()重写了
        System.out.println(p1.name.equals(p2.name)); //true
        //虽然p1和p2是在堆空间中;但p1.name和p2.name因为是字面量定义的
        //所以它们是在常量池中,故指向同一个内存空间;
        System.out.println(p1.name == p2.name); //true

        p1.name = "Jerry"; //新开辟了一个内存空间
        System.out.println(p2.name); //Tom
    }

    @Test
    
    public void test2(){
        String s1 = "abc";
        String s2 = "def";

        String s3 = "abcdef"; //常量池
        String s4 = "abc"+ "def"; //常量池
        String s5 = s1+ "def"; //堆空间
        String s6 = "abc"+ s2; //堆空间
        String s7 = s1 + s2; //堆空间
        System.out.println(s3 == s4); //true
        System.out.println(s3 == s5); //false
        System.out.println(s3 == s6); //false
        System.out.println(s5 == s6); //false
        System.out.println(s5 == s7); //false
        System.out.println(s6 == s7); //false
        String s8 = s5.intern(); //返回得到的s8使用的常量池中已经存在的"abcdef"
        System.out.println(s3 == s8); //true
    }
}

2.String类的常用方法:

package com.yan.commonClass;

import org.junit.Test;


public class StringMethodTest {
    
    @Test
    public void test(){
        String s1 = "helloWorld";
        System.out.println(s1.length());
        System.out.println(s1.charAt(0));
        System.out.println(s1.isEmpty());
        String s2 = s1.toLowerCase();
        System.out.println(s1); //s1不可变的,为原来的字符串
        System.out.println(s2); //改成小写以后的字符串

        String s3 = "  he  llo  World  ";
        String s4 = s3.trim();
        System.out.println("---"+s3+"---");
        System.out.println("---"+s4+"---");

        String s5 = "HelloWorld";
        String s6 = "helloworld";
        System.out.println(s5.equals(s6)); //false
        System.out.println(s5.equalsIgnoreCase(s6)); //true

        String s7 = "Hello";
        String s8 = s7.concat("World");
        System.out.println(s8); //HelloWorld

        String s9 = "abc";
        String s10 = new String("abd");
        System.out.println(s9.compareTo(s10)); // -1:表示小于

        String s11 = "严以律己宽以待人";
        String s12 = s11.substring(4);
        System.out.println(s12); //宽以待人
        String s13 = s11.substring(2, 7);
        System.out.println(s13); //律己宽以待

    }

    
    @Test
    public void test1(){
        String s1 = "helloWorld";
        boolean b1 = s1.startsWith("he"); //true
        System.out.println(b1);
        boolean b2 = s1.endsWith("ld"); //true
        System.out.println(b2);

        boolean b3 = s1.startsWith("ll", 2);
        System.out.println(b3); //true

        String s2 = "wor";
        System.out.println(s1.contains(s2)); //false

        System.out.println(s1.indexOf("lo")); //3

        System.out.println(s1.indexOf("1o",5)); //-1

        String s3 = "HelloWorld";

        System.out.println(s3.lastIndexOf("or")); //6
        System.out.println(s3.lastIndexOf("or", 6)); //6

        //什么情况下,indexOf(str)和lastIndexOf(str)返回值相同?
        //情况一:存在唯一的一个str;情况二:不存在str

    }

    
    @Test
    public void test2(){
        String s1 = "HelloWorldHello";
        String s2 = s1.replace('H', 'h');
        System.out.println(s1); //HelloWorldHello
        System.out.println(s2); //helloWorldhello

        String s3 = s1.replace("Hello", "My");
        System.out.println(s3); //MyWorldMy
        System.out.println("--------------------------------");
        String s4 = "12hello34world56java78mysql910";
        //将字符串中的数字替换成, ,如果结果中开头和结尾有, 的话去掉
        //regex为正则表达式
        String s5 = s4.replaceAll("\d+",",").replaceAll("^,|,$", "");
        System.out.println(s5); //hello,world,java,mysql

        String s6 = "123456";
        //判断s6字符串中是否全部由数字组成,即有1-n个数字组成
        boolean matches = s6.matches("\d+");
        System.out.println(matches); //true

        String s7 = "0972-1243412";
        boolean matches1 = s7.matches("0972-\d{7,8}");
        System.out.println(matches1); //true

        System.out.println("--------------------------------");
        String str = "Hello|World|Java|Se";
        String[] s8 = str.split("\|");
        for(String s : s8){
            System.out.println(s); //Hello World Java Se
        }

        String str2 = "Hello.World.Java.Se";
        String[] s9 = str2.split("\.");
        for(String s : s9){
            System.out.println(s); //Hello World Java Se
        }
    }
}

3.String类与其他结构之间的转换:

package com.yan.commonClass;

import org.junit.Test;

import java.util.Arrays;


public class StringConvertTest {
    
    @Test
    public void test(){
        String str1 = "123";
        int num = Integer.parseInt(str1);
        System.out.println(num); //123

        String str2 = String.valueOf(num);
        System.out.println(str2); //123

    }

    
    @Test
    public void test1(){
        String s1 = "abc123";
        char[] chars = s1.toCharArray();
        for(char c:chars){
            System.out.println(c);
        }

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

    
    @Test
    public void test2() throws Exception{
        String s1 = "abc123天下";
        byte[] bytes = s1.getBytes(); //使用默认的字符集进行转换
        System.out.println(Arrays.toString(bytes)); //[97, 98, 99, 49, 50, 51, -27, -92, -87, -28, -72, -117]

        byte[] gbks = s1.getBytes("gbk"); //使用gbk字符集进行编码
        System.out.println(Arrays.toString(gbks)); //[97, 98, 99, 49, 50, 51, -52, -20, -49, -62]

        String s = new String(bytes); //使用默认的字符集,进行解码
        System.out.println(s); //abc123天下

        String s2 = new String(gbks); //使用gbk,进行解码
        System.out.println(s2); //abc123���� 原因:编码集和解码集不一致!
    }

}

4.StringBuffer和StringBuilder的使用(以StringBuffer为例):

package com.yan.commonClass;

import org.junit.Test;


public class StringBufferBuilderTest {
    

    @Test
    // StringBuffer的常用方法
    public void test(){
        
        StringBuffer s1 = new StringBuffer("abc");
        s1.append(1);
        s1.append("12");
        System.out.println(s1); //abc112
        // s1.delete(2,4);
        // s1.replace(2,4,"hello");
        // s1.insert(2, false);
        // s1.reverse();
        String s2 = s1.substring(1, 3);
        System.out.println(s1); //abc112
        System.out.println(s1.length()); //6
        System.out.println(s2); //bc

    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号