Java基础第八天

该文档是:Luo学习Java笔记...

博客连接:https://www.loveuluo.cn

日期:2020-11-6

1. 常用类

1.1 String类

String xx =""其实就是创建一个String对象:

image-20201106104812521

image-20201106104802145

注意:字符串常量池在jdk7.0的时候移动到堆内存中了,不在方法区。

image-20201106103945176

image-20201106104647957

对象的String值在内存中的图示:

image-20201106105641027

测试类:

image-20201106105703147

image-20201106105739854

== 测试:

image-20201106144700205

image-20201106144914622

image-20201106144730869

"xxxxxxx"号可以用.调用方法:
image-20201106145027054xxxx

1.2 String类的构造方法

把byte数组改成String(方法可以查看帮助文档):

image-20201106145840580

1.3 String类的方法

valueOf方法(别的方法可以查看文档):可以将不是字符串的方法转成字符串

image-20201106150705097

image-20201106150836000

1.4 StringBuffer*

image-20201106190006036

为什么要使用StringBuffer,因为字符串拼接每拼接都会在常量池增加一个对象,会对常量池带来很大的压力。

image-20201106184357171

最好指定初始化容量:

image-20201106185356915

image-20201106185928099

小提示:String底层的byte数组容量没有指定(创建出来是多少就是多少无法改变),而StringBuffer的数组容量默认为16可以扩容。

为什么StringBuffer可以不用增加对象,String和StringBuffer底层都是数组,String的数组是final修饰的而StringBuilder不是。(byte数组存放字节)

如果是final修饰的, 这个value指向的对象无法改变,而没有被final修饰的可以指向新的大的数组对象,之前的会被垃圾回收掉。

image-20201106183655540

1.5 StringBuilder

StringBuffer是线程安全的,StringBuilder是非线程安全的。

image-20201106190413557

2. 包装类

image-20201106192409718

为什么要用包装类:

image-20201106192151793

image-20201106192352527

八种包装类型:

image-20201106194103719

负责拆箱的方法(用不着因为有自动装拆箱):

image-20201106194054560

通过访问包装类的常量,来获取最大值和最小值:

image-20201106194934990

image-20201106194947025

2.1 自动装箱和自动拆箱

image-20201106200721729

自动装箱:

image-20201106200748945

自动拆箱:

image-20201106201017645

== 这个运算符不会触发自动拆箱机制(JDK14以及之后才会):

image-20201106201509032

-128到127之间的所有包装对象已经提前创好放到了整数型常量池之中(Integer重要面试题*):

image-20201106203117595

image-20201106203913919

2.2 Integer的常用方法

将字符串转换为int方法(因为网页中文本框输入的数字一般是字符串,要转换成int,所以该方法比较常用):

image-20201107095017975

Double、Float ......同理

image-20201107100345527

3. 日期类

3.1 获取系统当前日期,和Data转String,String转Data

获取系统当前日期:

image-20201107101516025

创建日期格式对象:

image-20201107101827729

调用日期格式对象的方法把 创建出来的系统当前时间对象传入:

image-20201107101944500

image-20201107102008062

将日期字符串转换成Data类型:

image-20201107102702692

3.2 获取自1970年到系统时间的总毫秒值/统计方法执行耗费时间的方法

image-20201107104009134

image-20201107104259950

3.3 Data有参构造方法(传毫秒值)

这样做的话可以获取昨天的此时的时间。

image-20201107105455096

4. 数字类

4.1 数字格式化

image-20201107133606361

4.2 高精度数字

image-20201107133944357

5. 随机数

5.1 随机产生0-100随机数

image-20201107134302167

5.2 生成5个不重复的随机数

public class 五个不同的随机数 {
    public static void main(String[] args) {
        Random random=new Random();
        int[] ints=new int[4];
        for (int i = 0; i < ints.length; i++) {
            int i1 = random.nextInt(6); //随机数0-5
            ints[i] = i1; //把得到的随机数赋值给数组的i下标
            for (int i2 = 0; i2 < i; i2++) {
                if (ints[i2] == i1){ //如果数组中<i下标的元素有==于i1的
                    i--; // i-1也就会重新生成一次
                }
            }
        }
        for (int anInt : ints) {
            System.out.println(anInt);
        }
    }
}

6. 枚举

image-20201107152704338

表1 Enum类的常用方法

方法名称描述
values()以数组形式返回枚举类型的所有成员
valueOf()将普通字符串转换为枚举实例
compareTo()比较两个枚举成员在定义时的顺序
ordinal()获取枚举成员的索引位置

例子 一:

enum Car {
    lamborghini(900),tata(2),audi(50),fiat(15),honda(12);
    private int price;
    Car(int p) {
        price = p;
    }
    int getPrice() {
        return price;
    } 
}
public class Main {
    public static void main(String args[]){
        System.out.println("所有汽车的价格:");
        for (Car c : Car.values())
        System.out.println(c + " 需要 " 
        + c.getPrice() + " 千美元。");
    }
}
输出的结果为:
    所有汽车的价格:
lamborghini 需要 900 千美元。
tata 需要 2 千美元。
audi 需要 50 千美元。
fiat 需要 15 千美元。
honda 需要 12 千美元。

例子 二:向枚举中添加新方法

  如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

public enum Color {  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
    // 成员变量  
    private String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
    // 普通方法  
    public static String getName(int index) {  
        for (Color c : Color.values()) {  
            if (c.getIndex() == index) {  
                return c.name;  
            }  
        }  
        return null;  
    }  
    // get set 方法  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public int getIndex() {  
        return index;  
    }  
    public void setIndex(int index) {  
        this.index = index;  
    }  
}  
最后修改:2020 年 11 月 28 日 09 : 53 AM
如果觉得我的文章对你有用,请随意赞赏