1.java特性:跨平台性
2.程序是如何运行的
程序-->class文件(编译(javac.exe))-->java文件(运行(java.exe))
3.java的构成(8个)
关键字,标识符,注释,变量和常量,运算符,语句,函数,数组
4.进制(3)
1Byte=8bit
八进制0(数字0)开头。十六进制0x开头。
负数=正数的取反+1
5.数据类型(基本、引用)
基本:bit,short,int,long,float,double,char,boolean
引用:interface,class,数组
6.逻辑运算符(3)
^:异或。一正一负,结果为真。都正都负,结果为假。
(A^B)^B=A(异或同一个数2次,结果是他本身)
&和&&,|和||的区别:一个的符号两边不管什么情况都要运算。2个的如果有一边已经确定能得到结果了,另一边就不晕算了。
7.位运算符(2)
<<:左移(乘以2的次幂) >>:右移(除以2的次幂)
>>>:无符号右移(最高位肯定是0)
8.while,do while
while可能一次都不运行,do while至少运行一次
9.continue
结束本次循环,开始下一次循环
10.\+字母(3)
\r:换行(相当于回车)
\n:新行(\r\n一般连用)
\t:制表符(相当于tab)
11.函数:一段能实现特定功能的独立小程序
12.重载:一个类中可以有多个同名函数,但是只要参数类型不同,或者参数数量不同即可。
注:重载与返回值无关,只与参数有关
重写:在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写
13.数组格式
int[] arr = new int[3];
int[] arr = new int[]{1,2,3};
int[] arr = {1,2,3};
14.内存:寄存器,本地方法区,方法区,栈,堆
栈:存放临时对象,对象生命周期结束对象被释放(方法中的变量都是临时对象)。
堆:存放实体对象。对象都有首地址。对象都有默认初始值,不同类型默认初始值不同。对象不用了被垃圾回收机制回收。
15.进制
一个整数有32个二进制位,8个16进制位。
16.二维数组
int[][] arr = new int[2][2];
int[][] arr = new int[2][];
int[][] arr = {{1,1},{2,2}};
求和:
for(int i = 0;i<arr.length;i++){
for(int j = 0;j<arr[j].length;j++){
sum+=a[i][j];
}
}
17.面向对象三个特征:封装,继承,多态
18.构造函数(关键字):this
19.静态方法(关键字):static
对象初始化流程:
(1).加载字节码进内存
(2).new开辟内存空间,分配首地址值
(3).属性默认初始化
(4).调用构造函数,压栈
(5).super()调用父类构造函数
(6).显性给属性初始化
(7).构造代码块
(8).构造函数的自定义初始化代码
(9)初始化完成,将地址赋给指定引用
20.单例设计模式:多个程序同时操纵同一个配置
饿汉式:(1).先创建对象 (2)构造函数私有化 (3)定义方法返回该对象
懒汉式:(1).先不创建对象,置为null (2)构造函数私有化 (3)定义方法返回,若为空,new一个对象
21.父类:当多个方法有共性时,抽取这些共性组成这些类的父类。(子类与父类的关系为extends)
(1)父类的私有变量子类不可以直接访问
(2)子类父类同名,子类:this,父类:super
(3)子类父类的方法名,参数,返回值都一样时,用子类,这叫做继承
(4)父类如果无空构造函数,子类必须显性的super()
(5)子类调用自己的构造函数时,必定会运行父类的构造函数
(6)this()和super()必定要有一个,但不可以同时都有,且必须放在第一行
(7)final不存在继承的说法
22.抽象类:描述一类事物的类
(1)抽象方法只能存在于抽象类中,用abstract表明
(2)抽象类不可以实例化
(3)必须要覆盖抽象类中的所有抽象方法才可以实例化
23.接口:用于拓展某个功能
(1)接口中常见的成员
全局常量:public static final AAA;
抽象方法:public abstract void getAaa();
(2).java不支持多继承,支持多实现。但是接口支持多继承。
重点:抽象类和接口的区别
(1).抽象类要被子类继承,接口要被类实现
(2).抽象类中可以作方法声明,也可以做方法实现。接口只能做方法声明
(3).抽象类中的变量是普通变量,接口里定义的变量只能是公共的静态的常量
(4).抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量
24.多态:用instanceof判断是否是某一类型
(1)向上转型:隐藏子类型,可以用父类型。
向下转型:可以用子类型,但是有风险。
(2)调用多态时的口诀:调用成员变量和静态方法都看左边。调用普通方法,编译看左边,运行看右边。
25.内部类
非静态方法非静态成员:Outer.Inner in = new Outer().Inner();
静态方法非静态成员:Outer.Inner in = new Outer.inner();
静态方法静态成员:Outer.Inner;
26,Object: equals,toString的重写
27.异常
(1).错误:error。异常:Exception。
(2).异常一般2种解决方案:try catch finally 和 throw
(3).除了System.exit(0)(停止虚拟机)不执行finally,其他的都要执行finally
(4).若有多个catch,子类的错误要放在最上面
(5).若父类没有抛出错误,子类出现了错误只能try catch finally ,不能throw
(6).throws用在方法上,throw用在方法内
28.包
(1)import:导包。jar:Java的压缩包
(2)开放程度:public>protected(不支持不同包)>default(不支持不同包、子类)>private(不支持不同包、子类、不同类)