JAVA杂记
Posted xxikwonxjlxi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA杂记相关的知识,希望对你有一定的参考价值。
写在前面:期末考试要来了,对于一个暑假自学了几天JAVA之后一个学期划水的人来说现在就是踏上了JAVA预习之路。下面是自己xjb记的东西,主要是根据老师给的流程图总结的自己认为需要的一些零碎的小知识,翻书跟看网课看到哪就写到哪。好吧期末预习开始~希望考个好成绩回家开开心心过年!!!
好的我开始了从零到考试的短暂JAVA学习之路......
1.构造方法是不能够继承的。
所以子类要重载父类的构造方法,但可在其中用super调用父类的构造方法.构造方法只能用类名写,并且没有返回类型。如果子类没有定义构造方法那么默认它的构造方法为super(),即父类的不带参数的构造方法
2.已经重载了构造方法之后再在它后面定义一个空的构造方法那这个构造方法就不是默认构造方法了
3.类前面要不是写private要不是就是默认的。默认的表示同包可访问,private表示不同包也能访问
4.非访问修饰符:static final abstract
5.用static修饰之后其实跟这个类的对象无关了,因此可以不用对象名称而是直接使用类名在访问static方法或者变量。注意:static方法中,不能访问实例变量,也不能使用super或者this6.final类不能被继承,final方法不能被覆盖,final字段是只读的,如果是final static a则a的默认值为0但是如果只是final a则a没有默认值,只能且仅能给a赋值一次
6.哦莫这里掉了一条.......那就算了吧Hhhhhh
7.接口的所有方法都是public abstract型的
8.接口的实现:类名+implements+接口名,然后里面实现具体的接口方法时一定要在原方法名前面加上public
9.枚举:enum Light={Red,Green,Yellow};
Light light=Light.Red;
switch(light){ case Red: .......break;};
10.接口里也可以有static方法,这个方法就不再是abstract类型的了,而是直接在定义方法的时候就实现它,然后称这样的方法叫做默认方法。子类在implements时不需要再实现它了
11.源文件的名字必须与public类的类同名
12.局部变量不能被访问控制符及static修饰,因为这些其实都是跟类有关的修饰符,但它可以被final修饰成只读的变量
13.JAVA的特点:封装继承和多态
14.instanceof方法:对象名+instanceof+类名判断是不是这种类型,或者这种类型的子类。返回结果是boolean值
15.外部类只能用public或者默认
16.内部类用static的话就跟外部类其实是没什么差别了
17.方法中的内部类:叫做局部类。它可以访问其外部类的成员,不能够访问该方法的局部变量,除非是final型的局部变量
18.匿名类:没有类名,直接用其父类或接口的名字。在定义类的同时就生成了对象。因此可看成是“一次性使用”的类。匿名类直接使用父类的构造方法,有作为方法的参数等用途
19.Lambda表达式:()->结果 实际上就是匿名类的一个实例
能写成Lambda的接口要求包含且只包含一个抽象方法,即函数式接口
通过Lambda表达式接口Converter<F,T>,它是一个泛型接口。convert()方法功能可用于将类型F值转换成类型T值:
@FuctionalInterface
interface Converter<F,T>{
T convert(F from);
}
用Lambda表达式创建接口对象,并使用它的convert()方法将一个字符串转换为整数:
Converter<String,Integer> converter=(from)->Integer.valueOF(from);
Integer converted=converter.convert("2345");
System.out.println(converted);
20.枚举其实是一种特殊的class类型,是语法糖
21.exception:异常
finally:写在最后,不管有没有异常抛出,都要执行的一条语句。
try{
语句组;
}catch(异常类名,异常形式参数名){
异常处理语句组;
}finally{
异常处理语句组;
}
catch语句可以0至多个,可以没有finally语句
finally语句必须执行,就算前面有return break
22.子类异常要放在父类异常前面
23.Object终极父类里面有
clone()方法:要继承Cloneable接口,在类里面用clone()方法,例如:
Car A=(Car)B.clone();
clone()方法返回的是Object型所以要强制转换。
clone()方法在main函数里抛出异常是CloneNotSupportedException
24.日期-时间的类在java.time包中
本地日期:LocalDate
25.compareTo()方法:
<变量1>.compareTo<变量2>返回的值是变量1比变量2的字典顺序,前大后小
26.
public class DescSort implements Comparator<String>{
Arrays.sort(ss,new DescSort());
27.toString()方法可以被改写,但是返回的类型得是String型的!!!
28.Queue接口和PriorityQueue类:后者是前者的一个实现类,它实现的是一种优先队列,优先队列中元素的顺序是根据元素的值排列的Queue接口中有几个方法:add()和offer()都是可以向队列中插入一个元素,前者会有异常抛出的情况,后者是返回false
remove()和poll()都是删除并返回队头元素,即边删边返回值,队空的时候前者会
有异常抛出,后者则是返回null
element()和peek()都是返回队头元素但不删除,队空时前者抛出异常,后者返回null
isEmpty()返回的是布尔值,用于判断是否队空
29.java.time包里面:
Instant.now()方法是静态方法,返回当前的瞬时时间点
Duration.between(Instant A,Instant B)是静态方法,用于计算了两个瞬时点的时间差
eg:
Instant start=Instant.now();
...........
Instant end=Instant.now();
System.out.printf("使用并行流用时:%d毫秒
",Duration.between(start, end).toMillis());
30.BigInteger类:需要非常大的整数或非常高精度的浮点数,就可以使用。在java.math包中
可以用new BigInteger(String)创建实例,然后使用add(),substract(),multiply(),divide()来进行
算术计算
eg://计算n的阶乘
public static BigInteger factorial(long n) {
BigInteger result=BigInteger.ONE;//表示初始值为1
for(long i=1;i<=n;i++) {
result=result.multiply(new BigInteger(i+" "));
}
return result;
}
(i+" ")是因为:BigInteger类的构造方法是BigInteger(String S)所以必须i+" "来形成一个String
类型作为构造参数
31.List接口:
将数组转换成为List对象:
String []str={"one","two"};
List<String> list=Arrays.asList(str);
也可以直接将数组元素作为asList()方法的参数写在括号中:
List<String> list=Arrays.asList("one","two");
注意:Arrays.asList()方法返回的List对象是不可变的,不能对其进行删除、添加等操作
如果想动其中的元素则需要:List<String>list=new ArrayList<>(Arrays.asList(str));
以上是关于JAVA杂记的主要内容,如果未能解决你的问题,请参考以下文章