网站:
String[] args:可以用来获取命令行用户输入进去的参数
System.out.println(s);这个方法会调用s的toString方法
javaSE:java标准版
javaEE:java企业版,定位在服务器端,包括SE
javaME:定位在消费产品上
java既有编译(c,c++)又有解释:
JDK包含JRE,JRE包含JVM(虚拟机) ,各个操作系统对应不同jvm
静态变量:类变量,类在它在。static int a;
成员变量从属于对象
final:
整型:
右边的整型常量(就是数字)默认int,当数字过长时,后面加L表示转成long型常量,否则无法表示(下图是存在2种类型):
右边的数默认是double,此处加f转成float:
float a = 2.1f:
float和double都不是精确的,但是BigDecimal是:
只是精度是精的,但是不是指任意长度的整数
BigInteger,BigDecimal
与:& ,或:|,<
true & false = false ,3 & 4 = 0
短路与: A&&B,若A是false,则后面不看了,与&仅此区别
Scanner:得到键盘输入
格式化快捷键:Ctrl+alt+L
重载:方法名一致
栈:
堆:
类和对应的存储:
垃圾回收(C++没有):
搜索堆中哪些对象没有被引用,则当垃圾回收掉
分代垃圾回收:
this:可指代当前对象:
类只能调动static修饰的东西。
静态初始化块:
运行时会先执行父类的静态初始化块,再执行它,再执行别的句子:
值传递:就是传递副本
但是如果传的是对象,其实传地址,则操纵同一个对象:
package:类似文件夹
同一个包里面的类不用import
不同包得导:
还能导入静态属性和方法,就能直接使用方法和属性
java的类没有多继承,接口有。
默认extends Object
instanceOf :
判断对象是否是后面类的对象:
重载overload是一个类多个同名方法
override重写是子类重写父类的方法:
要求:
1.方法名和参数列表相同
2.子类返回值类型要小
==:看是否完全相等,对象则看地址
super:指向父类
构造器中默认调用父类的构造器:
属性查找顺序:
访问控制符(访问类内部的属性和方法或者整个类):
此处的子类是不同包,但是有继承关系
多态又叫动态绑定:调用某一方法时,要看是谁在调用,不同人调用结果不同
多态条件:
Animal d= new Dog();
d.shout();
d只能调用Animal里面的方法,或者Dog里面重写Animal的方法(多态)
((Dog)d).shout()向下转型后就能调用狗的所有方法了
数组:
for:
abstract:
但是可以:
抽象类 a = new 子类();
接口:
由于是Volant,v只能调用fly。
非静态内部类(类似进程中的线程):
可以访问外部类的成员:
String:
比较字符串一般用equals
常用方法:
replace不会改变s1本身
数组 拷贝:
arraycopy:
从s1的index=2处开始向s2的6处拷,拷贝3个元素过去
Arrays:
Arrays.toString(a):输出数组a的全部元素
sort:排序
binarySearch:
查询a数组中元素30的index:
二维数组:
二维数组存储表格:
包装类:
基本数据类型,包装类对象,字符串的相互转化:
拆箱与装箱:
字符串转成数字:
int a = Integer.parseInt("123");
Integer.toHexString(123):将十进制123转换成十六进制,然后以字符串形式输出。
在valueOf(n)中,当-128
StringBuilder可以被修改(相比较string)
循环累加字符时,推荐:
Date:
以1970为基准能得到时间戳:
DateFormat:字符串和时间的转化
Calendar:
枚举:
异常:
try catch:
finally必然执行
异常一层层外抛,最后抛给jvm: