java自学基础知识重点2

Java基础2

类-续
//protected方法可以被继承的类访问

final;
//final修饰class阻止继承
//final修饰method阻止子类覆写

//classpath

//模块Module
//.jmod文件
核心类
字符串和编码
//字符串为char[]数组
//字符串比较
s1.equals(s2);
s1.toLowerCase();//变小写
toUpperCase();
equalsIgnoreCase();//忽略大小写比较
//其他的功能
//String是不可变对象,字符串操作不改变原字符串內容,而是返回新字符串

//java的String、char使用Unicode编码
StringBuilder
//可变对象
StringBuilder sb = new StringBuilder(1024);
for (int i = 0; i < 1000; i++) {
    sb.append(',');
    sb.append(i);
}
String s = sb.toString();
StringJoiner
//拼接字符串数组
import java.util.StringJoiner;
public class Main {
    public static void main(String[] args) {
        String[] names = {"Bob", "Alice", "Grace"};
        var sj = new StringJoiner(", ", "Hello ", "!");
        for (String name : names) {
            sj.add(name);
        }
        System.out.println(sj.toString());
    }
}
//result
Hello Bob, Alice, Grace!
//String.join(),没有开头和结尾时方便(Strig静态方法)
String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(", ", names);

//var是局部变量
包装类型
//基本类型:byte,short,int,long,boolean,float,double,char

//引用类型:所有class和interface类型

//引用类型可以赋值为null,表示空,但基本类型不能赋值为null

//Auto Boxing

//不变类

Integer n = new Integer(100);//新实例
Integer n = Integer.valueOf(100);//它尽可能地返回缓存的实例以节省内存

//进制转换为字符串
System.out.println(Integer.toString(100)); // "100",表示为10进制
System.out.println(Integer.toString(100, 36)); // "2s",表示为36进制
System.out.println(Integer.toHexString(100)); // "64",表示为16进制
System.out.println(Integer.toOctalString(100)); // "144",表示为8进制
System.out.println(Integer.toBinaryString(100)); // "1100100",表示为2进制

// boolean只有两个值true/false,其包装类型只需要引用Boolean提供的静态字段:
Boolean t = Boolean.TRUE;
Boolean f = Boolean.FALSE;
// int可表示的最大/最小值:
int max = Integer.MAX_VALUE; // 2147483647
int min = Integer.MIN_VALUE; // -2147483648
// long类型占用的bit和byte数量:
int sizeOfLong = Long.SIZE; // 64 (bits)
int bytesOfLong = Long.BYTES; // 8 (bytes)

//包装继承自Number类
//向上转型为Number:
Number num = new Integer(999);
// 获取byte, int, long, float, double:
byte b = num.byteValue();
int n = num.intValue();
long ln = num.longValue();
float f = num.floatValue();
double d = num.doubleValue();

//处理无符号整型
byte x = -1;
byte y = 127;
System.out.println(Byte.toUnsignedInt(x)); // 255
System.out.println(Byte.toUnsignedInt(y)); // 127

//包装类型的比较必须使用equals()

JavaBean
// 读方法:
public Type getXyz()
// 写方法:
public void setXyz(Type value)//这种class称为JavaBean

//boolean字段比较特殊
// 读方法:
public boolean isChild()
// 写方法:
public void setChild(boolean value)

//我们通常把一组对应的读方法(getter)和写方法(setter)称为属性(property)。
//JavaBean通过IDE可快速生成getter和setter
    
//枚举JavaBean属性
//使用Introspector.getBeanInfo()可以获取属性列表。    
枚举类
//enum
enum Weekday {
    SUN, MON, TUE, WED, THU, FRI, SAT;
}
//引用类型比较,要始终使用equals()方法,但enum类型可以例外。
//这是因为enum类型的每个常量在JVM中只有一个唯一实例,所以可以直接用==比较

记录类
public record Point(int x, int y) {}
record;
//假设Point类的x、y不允许负数,我们就得给Point的构造方法加上检查逻辑
public record Point(int x, int y) {
    public Point {
        if (x < 0 || y < 0) {
            throw new IllegalArgumentException();
        }
    }
}
BigInteger
//整数数值大于long的64位时;
BigInteger bi = new BigInteger("1234567890");
System.out.println(bi.pow(5)); //2867971860299718107233761438093672048294900000
BigInteger用于表示任意大小的整数;
BigInteger是不变类,并且继承自Number;
将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。
BigDecimal
//浮点数过大时使用
BigDecimal bd = new BigDecimal("123.4567");
System.out.println(bd.multiply(bd)); // 15241.55677489
常用工具类
Math:数学计算

Random:生成伪随机数

SecureRandom:生成安全的随机数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值