Java基础知识总结(52)

(3)StringBuilder和StringBuffer的区别(一般情况下分别写出概念就可以)

1. String、StringBuffer、StringBuilder都是Charsquence接口的子类
2. String、StringBuffer、StringBuilder都是final修饰的,不能被继承,也就是说三者都没有子类
3. String是不可变类,创建的字符串序列不能被修改,StringBuffer和StringBuilder是可以修改的
4. StringBuffer是线程安全的,StringBuilder是非线程安全的,因此StringBuilder效率更高,在不考虑线程安全或者单线程情况下优先考虑使用StringBuilder。

(4)Java对String的优化

String是一个不可变类,如果发生了改变一定是指向了一个新的对象。
在JVM中有一块区域叫做常量池,常量池里放着字符串的字面量和常量。
当字面量出现一个字符串后,Java会将该字面量放入常量池,
如果再有变量引用该字符串时,直接返回常量池中字符串的引用,而不创建对象。
​
面试题:

/**

  • 面试题

  • @author Ray * */ public class StringDemo1 { public static void main(String[] args) {

    //字面值+字面值  = 常量池
    //字面值+对象 = 对象
    //对象+对象 = 对象
    // 对拼接结果使用intern,则会将对象放置在常量池中,如果已经存在,则返回已经存在的对象地址,Java1.6是将字面值放置在常量池中,Java1.7是将引用地址放置在常量池中
    String str1 = "Hello";
    String str2 = "He"+"llo";
    String str3 = "He";
    String str4 = "llo";
    String str5 = new String("He");
    String str6 = new String("llo");
    String str7 = new String("Hello");
    System.out.println("---------");
    System.out.println(str1 == str2);//true
    System.out.println((str1).equals(str2));//true
    System.out.println("---------");
    System.out.println((str3+str6)==str1);//false
    System.out.println((str3+str6).equals(str1));//true     
    System.out.println((str5+str4)==str1);//false
    System.out.println((str5+str4).equals(str1));//true
    System.out.println("---------");
    System.out.println((str5+str6)==str7);//false
    System.out.println((str5+str6).equals(str7));//true
    System.out.println("---------");

    }

}

(5)Scanner获取键盘输入

主要方法:
hasNextXXX():是否还有下个输入项,其中XXX可以是Int等代表基本类型的字符串。
nextXxx():获取下个输入项,输入项可以是基本类型数据,如果是字符串则直接使用next()
​
/**
  • Scanner类

  • @author Ray * */ public class Test2 {

    public static void main(String[] args) {

    System.out.println("请输入:");
    Scanner scanner = new Scanner(System.in);
    while(scanner.hasNext()) {
        int i = scanner.nextInt();
        System.out.println(i);
    }
    scanner.close();

    }

} (6)系统相关的类

System类代表当前运行Java程序的平台。System为开发者提供了获取系统环境变量,系统属性等方法。
​
    Map<String,String> getenv():获取系统所有的环境变量,保存在map集合中。
    String getenv(String name):获取指定的环境变量
    Properties getProperties():获取系统的属性。 

(7)Runtime类

Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应Runtime实例。可以访问JVM相关信息,处理器数量,内存信息等
​
    int availableProcessors():获取处理器数量
    long freeMemory():获取jvm空闲内存
    long totalMemory():获取最大内存
    long maxMemory():获取虚拟机可以用最大内存

(8)Math工具类 Math提供了基本的加减乘除以为,还提供了一些复杂的数学运行,三角函数,对数运算等,Math类还提供了两个常量PI和E

    Math.sqrt() 求平方根,参数为负数时返回NAN
    Math.pow(x,a)   幂运算,x的a次方
    Math.floor(a)   向下取整(注意:不四舍五入)
    Math.ceil(a)    向上取整(注意:不四舍五入)
    Math.floorMod(x,y)  求余,x%y
    Math.toDegree() 弧度转换成角度
    Math.toRadians()    角度转换成弧度
    Math.sin()  求正弦
    Math.cos()  求余弦
    Math.tan()  求正切
    Math.abs()  求绝对值
    Math.max()  两个数的最大值
    Math.min()  两个数最小值
    Math.random()   0.0到1.0的随机数

(9)Random生成随机数

    Random():以当前时间作为种子
    Random(long seed):需要开发者显式传入long型的种子 
​
    nextDouble():生成0.0—1.0之间的伪随机double数。
    nextFloat():生成0.0—1.0之间的伪随机float数。
    nextInt():生成一个 int类型取值范围内的伪随机整数
    nextInt(int a):生成0-a之间的伪随机整数。
    nextLong():生成处于long整数取值范围的伪随机整数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好教员好

您的鼓励是我前进动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值