1. 基础小程序
①随意给出一个三位数,打印显示它的个位数,十位数,百位数
int mun = 187;
int bai = 187/100;//百位数为:1
int shi = 187%100/10;//十位数为:8
int ge = 187%10;//个位数为:7
②char使用的特殊场景
char c1 = 'a';
char c2 = 97;
System.out.println(c1);
//输出为 : a
System.out.println(c2);//输出为 : a
char c3 = 5;
char c4 = '5';
System.out.println(c3);
//输出为 :(乱码)
System.out.println(c4);
//输出为 : 5
③强制转换
精度由小到大自由转换,由大到小强制转换
精度从小到大顺序:byte、short、int、long、float、double;
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double;
即若 byte a = 126;则int b = a;a可以直接赋值给b
若 int b = 126;则 byte a = (int)b;b(int)的精度比a(byte)的精度大不能直接转换,只能强制转换
在强制转换的时候,可能会导致精度损失:int 的数据大于 byte的容量
④String类型的转换
String a = "10";
int b = Integer.parseInt(a);
这个时候b的值为:10
Integer.parseInt();的作用是将String类型里面的数字转化为int类型的数字
如果String类型里面有除了数字以外的字符,则就会运行出错,这个时候就会用到捕获异常机制
即,try catch finally 机制 , 它的作用是抛出异常,即若程序出错,则不会执行这一行代码,不会终止程序
而是继续执行下一段程序
String的其他转换类型
String a = "10";
double f = Double.parseDouble(c);
float g = Float.parseFloat(c);
byte h = Byte.parseByte(c);
⑤三元运算符
int max = a>b?a:b;//a是否大于b,是则max = a,否则max = b。
int max = a>b?a:(b>c)?b:c;//a是否大于b,是则max = a,否则执行这段(b>c)?b:c
2.无参方法、关键字方法的命名规则与访问权限
①static 静态的只能调用静态的,直接用:类名.方法名
②掌握关键字方法的命名规则
1.代表该方法要表达的意思
2.单个单词的时候首字母小写
3.两个单词以上的时候第2,3,4.....个单词首字母大写
4.不能以数字开头,数字可以加在中间或者后面
5.两个单词链接可以使用下划线_ 比如:like_Band
6.不能使用特殊字符,如:¥#@%
7.驼峰命名法:
小驼峰命名法:myDearMom
大驼峰命名法:MyDeraMom
③无参方法的调用
例如:
在Teacher 类当中有:
Person person = new Person();
person.eat();
其中eat();为Person 类当中的方法
3.方法的重载
构成重载方法:方法名一样,参数的个数、类型、顺序不同
不构成重载的情况:
①方法名一样,参数类型一样,只有返回值不一样,这个不构成重载
②只有形参的名称不同,不构成重载
③与普通方法一样,构造函数也可以重载
4.快速导包 或者去掉不用到的包
ctrl+shift+O
5.掌握封装的概念以及应用
把内容都private(封装)起来,只提供对外调用
即建立private权限的变量进行Getter and Setter
其他类调用该变量的时候只需调用Getter and Setter中的方法
有利于保护数据
6.无参构造方法与有参构造方法
掌握构造方法
1.不写: 默认有一个无参构造方法,只不过隐藏起来了
2.构造方法支持重载
3.只定义了有参构造方法,默认一个无参构造方法会消失,如果无参构造方法要用到,记得写出来
4.构造方法的方法名必须与类名一样。
5.构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
6.构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
7.构造方法不能由编程人员调用,而要系统调用。
8.构造方法可以重载,以参数的个数,类型,或排序顺序区分。
7.掌握父类子类的使用
掌握继承的概念与应用
1.抛出问题:代码yongyu
2.继承与封装不是功能而是思想
3.继承:提取两个类中相同的属性和方法称为一个类01,其他类可以继承类01,继承之后可以直接使用其中的东西
4.子类拥有父类非 private 的属性、方法。
5.父类 子类 只是相对来说
6.父类无法获取子类的属性和方法
7.三层继承:例如Teacher 继承 People ,Wuli继承Teacher,
那么Wuli 可以使用Teacher 与People 的属性和方法
8.extends只能单继承
(子类只能继承一个父类,父类可以有多个子类)
9.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
10.子类可以用自己的方式实现父类的方法。
11.提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
8.方法的重写
1.Java 方法重载和重写的区别
重载:
方法参数个数、类型、顺序不同
重写:
方法名,参数,参数类型,返回值要一致
2.子类去重写父类的方法,在main方法调用的时候优先使用子类的方法,也就是就近原则
3.方法的重写:父类的访问修饰符不能大于子类的访问修饰符
同级访问修饰符只有private不行,其他三种情况都可以
9.继承当中 super 与 this 关键字,以及方法的调用
1.设main方法中有:teacher.eat();则调用子方法,若子类没有这个方法,再往上父类调这个方法,直到有这个方法为止
2.设方法中有:this.eat();则调用本类方法eat(),若本类没有这个方法,再往上父类调这个方法,直到有这个方法为止
3.设方法中有:super.eat();则调用父类方法eat(),若父类没有这个方法,再往上父类调这个方法,直到有这个方法为止
4.直接方法,前面没有super或者this:默认是this.方法
10.继承当中的构造方法 super关键字
详细见:博客(16)
可以回不可言传
11.多态 - 上转型与下转型
详见:博客(18)
12.单例设计模式 - 饿汉式、无懒汉式
1.所谓单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能在一个对象实例
?
2.如何实现?
饿汉式 VS 懒汉式
3.区分饿汉式和懒汉式
饿汉式:
坏处:对象加载时间过长
好处:饿汉式是线程安全的
懒汉式:
目前写法的坏处:线程不安全-------->到多线程的时候再修改
好处:延迟对象的创建
代码区别详见:博客(21)
13.抽象类、抽象方法的使用
abstract抽象类
抽象类不能够实例化,它只能作为父类被继承(抽象类不能实例化:即不能Person person = new Person();其中Person是abstract类)
抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象,从多个具有相同特征的类中抽象出一个抽象类
以这个抽象类作为其子类的模板没从而避免了子类的随意性
(1)抽象方法只做声明,不包含实现,可以看成没有实现体的虚方法
(有方法,没有方法体)
(2)抽象类不能够实例化
(3)抽象类可以有但不是必须有的抽象属性和抽象方法,但是一旦有了抽象方法就一定是抽象类
(4)具体派生类必须覆盖基类的抽象方法
(5)抽象派生类可以覆盖基类的抽象方法,不可以不覆盖,如果不覆盖,则派生类必须覆盖它们
(6)抽象类里面不一定有抽象方法,但是抽象方法必须在抽象类中
(7)强行要求子类去实现抽象方法,即一旦子类继承了抽象类,那么子类一定要重写全部抽象类当中的抽象方法
(8)抽象类当中可以定义属性
(9)抽象类当中可以定义无参构造方法
(10)抽象类当中可以定义有参构造方法
(11)抽象类当中可以定义抽象方法
(12)抽象类当中可以定义不是抽象的方法
14.接口 - 接口与抽象类的区别
接口和抽象类的区别
(1)抽象类可以有构造方法,接口中不能有构造方法
(2)抽象类中可以有普通成员变量,接口中没有普通成员变量
(3)抽象类中包含静态方法,接口中不能包含静态方法
(4)一个类可以实现多个接口,但只能继承一个抽象类
(5)接口可以被多重实现,抽象类只能被单一继承
接口与抽象类的相同点
(1)都可以被继承
(2)都不能被实例化
(3)都可以包含方法声明
(4)派生类必须实现未实现的方法
接口的不能:
1.接口不能定义属性和构造方法
2.接口不能够实例化
3.接口不能定义静态方法
4.接口不能定义普通方法
接口与抽象类中的方法都是只有方法没有方法体
15.final 的概念以及使用
1.final定义的常量不能修改,即不能重新赋值
2.final定义的类不能够被继承
3.final定义的方法不能够被重写
16.捕获异常 try - catch - finally
1.不捕获异常,10万行代码,有一行出错99999全死掉
2.把错误的代码捕获,没问题的代码还能继续执行下去
3.理解各种错误日志 Exception
catch (ArithmeticException e) {
e.printStackTrace();//捕获运算异常
catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();//捕获数组越界的错误
catch (NullPointerException e) {
e.printStackTrace();//捕获空指针异常的错
finally //不管对错都执行
17.DeBug调试
详见:博客(28)