1.extends继承
super()父类构造函数
instanceof关系运算符:判断A是否为B的派生类,A instanceof B
private修饰的成员不能被继承的子类访问
default(友好类型)修饰的成员只能被同包下继承的子类访问
2.abstract抽象(修饰符)
抽象类可以拥有非abstract的方法:变量,函数。
被abstract修饰的方法不能有具体实现方法,其要被子类具体实现(不能同时被final修饰)
3.interface(接口) 使用 implements 进行继承和使用
4.包,用于防止类名冲突,类似于c++命名空间的使用。
使用package 包路径进行指定
关于包名的解释:包名实际上就是相对路径。
例子:package mycode.first_class
表明当前的类文件应放置于mycode/first_class/目录下
5.关于静态字段static
在类中使用static修饰成员变量后,可以不通过实例化对象操作直接使用类名点成员变量名来直接使用成员变量,并且时可以被修改的,具有传递性。
6.访问域
没被访问修饰符修饰的变量叫做友好成员,在同一个报下的类可以拥有访问权限,不同包的类没有访问权限。
类能拥有其内部类的private的成员的访问权限。
final修饰的成员不允许篡改。
关于final成员的初始化问题:构造函数拥有对final成员的初始化权限(修改),关于是否一定为final成员赋予初值:只有在final与static同时修饰成员函数时才必须赋予初值。
7.方法重写
不能降低访问限制,参数及其个数必须相同,返回值必须为原类型或子类。
8.关于局部变量的默认值
成员函数没有默认值,但是类成员有默认值。
9.常见引用类型
接口,对象,数组
常用核心类
1.String
toLowerCase()转小写
toUpperCase()转大写
replace(被替换的字符串,替换成的字符串)
replaceAll(正则表达式,替换成的字符)
equals比较当前字符串与给定的字符串是否相同,不能直接使用==比较
trim移除字符串首尾的空白字符串( \t,\n ,\r等)。
substring(start,end)提取字符串不含end。
valueOf(任意基本类型)将任意基本类型转换为String,注意这个是静态方法,String.valueOf(),如果要将字符串转换为其他类型,需要借助其他类型的封装方法,例如:Integer.parseInteger(字符串)。
join(字符串,Char数组)方法,将Char每个元素使用指定的字符串进行拼接,静态方法。
getBytes(编码方式),转换为二进制存储。
StringBuilder关于StringBuilder的常规使用:append()追加字符串
同时其支持链式追加即.append(A).append(B).append©…
StringJoiner追加字符串,作用与String.join方法类似。
例子:
package STRING;
import java.util.*;
public class STRING {
public static void main(String[] args) {
String[] names = {"Bob", "Alice", "Grace"};
// 分割 头 尾部
StringJoiner sj = new StringJoiner(", ", "Hello ", "!");
for (String name : names) {
sj.add(name);
}
System.out.println(sj.toString());
}
}
结果:Hello Bob, Alice, Grace!
java包类型
1.可以自己去实现,但是Java中已经实现了基础的包 类型,Double,Integer,Boolean等等。
2.关于Integer的比较,不能使用==进行比较运算,数值较大时会出现比较错误,原因:Integer时引用类型,虽然java内部已经对其使用,使用了缓存 优化,但是这个不是绝对的可行。请务必使用equals()方法进行比较(实际上对于所有的引用类型都应该使用这样的比较方式)。
3.比较特殊的包类型:不变类型,只要实例化后 就不能被修改。
示例:
public final class Integer {
private final int value;
}
4.关于Integer的一些常用的方法总结:
Integer.parseInt(字符串,进制):静态方法,将字符串按指定的进制转换为Int类型。
5.Number类
Number是Double,Integer,Float的父类,可以使用上转型的方法使用其子类的方法。
示例:
// 向上转型为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();
6.JavaBean
额,实际上就是c++的结构体,但是java没有struct所以就是class,只是用来储存变量的class罢了。
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
提示:在Eclipse中,让光标放在你需要生成的类,点击右键,在弹出的菜单中选择“Source”,“Generate Getters and Setters”,在弹出的对话框中选中需要生成getter和setter方法的字段,点击确定即可由IDE自动完成所有方法代码。
7.enum枚举类型
枚举类型是jvm中唯一一个可以直接使用==进行比较的引用类型
enum wek{
MM,SS,AA;
}
public class STRING {
public static void main(String[] args) {
// TODO 自动生成的方法存根
student A = new student();
wek A1 = wek.MM;
wek A2 = wek.MM;
wek A3 = wek.AA;
System.out.println(A1==A2);
System.out.println(A3==A2);
}
}
结果:
true
false
8.BingInteger大整数类型(java.math.BigInteger用来表示任意大小的整数,缺点运算速度比较慢。)
转换为byte:byteValue()
转换为short:shortValue()
转换为int:intValue()
转换为long:longValue()
转换为float:floatValue()
转换为double:doubleValue()
简单演示常规使用方法:
public class STRING {
public static void main(String[] args) {
BigInteger n = new BigInteger("999999").pow(99);
//转换为基本类型
float f = n.floatValue();
System.out.println(f);
//输出:Infinity(数据大小超过float的范围,其他类型则会丢失高位信息)
System.out.println(n.toString());
//乘法
n = n.multiply(new BigInteger("5555"));
// 加法
n = n.add(new BigInteger("5555"));
//除法
n = n.divide(new BigInteger("5555"));
System.out.println(n.toString());
}
}
9.BigDecimal表示一个大小无上限和精度完全准确的小数(常用于财务计算)。
10.常用工具类
java.Math
随机数[0,1]:random()
ex = exp(x)
log10x = log10(x)
logex =log(e)
两个数的比较:min(a,b),max(a,b);
An = pow(A,n)
开方:sqrt()
三角函数(弧度制):sin,cos,tan,asin,acos
java.util.Random(伪随机数)
随机数生成器:
Random r = new Random();#可以填入整数作为随机种子
r.nextInt(); // 2071575453,每次都不一样
r.nextInt(10); // 5,生成一个[0,10)之间的int
r.nextLong(); // 8811649292570369305,每次都不一样
r.nextFloat(); // 0.54335...生成一个[0,1)之间的float
r.nextDouble(); // 0.3716...生成一个[0,1)之间的double
高安全的随机数生成器:SecureRamdom(真随机数)
其通过量子力学方式获取一个安全的随机数。
具体使用方法与Random相同。
Java线程Thread的创建与使用
- 继承接口Runable接口,并将需要实现多线程的代码写入到run方法中。
- 创建相关对象,传递到Thead的构造方法中,例如:
my_class a = new my_class();
Thread A = new Thread(a);//创建线程对象
A.start();//启动线程对象
- 同步代码块asynchronized:监视器为任意Object对象(线程安全)
Object A=new Object();//创建监视器A,或者使用this(当前对象)
asynchronized(监视器){
//同步代码块
}
- 同步方法asynchronized:
public synchronized void show(){//同步方法
}
//等价于
public void show(){
asynchronized(this){
//同步代码块
}
}