java学习日记

  • 基本数据类型
    • 数值型:
    • 整型:byte,short,int,long          默认值:0              范围:-2147483648~2147483647
    • 浮点型:float,double                     默认值:0.0
    • 布尔型:boolean                             默认值:false
    • 字符型:char                                   默认值:'\u0000'
  • 引用数据类型
    • 数组,类,接口                               默认值:null

处理中文可选char

文件传输或者编码使用byte

内存大小和文件大小,描述表的主键列(自动增长)可选long


static属性标注:使变量在全局数据区,通过类名直接进行修改(不通过实例化直接访问)

class Person{

private String name;

private Integer age;

country="China";

}

Person.country="China is good";(类名直接进行修改,可以不通过实例化的对象去访问)

static方法:1、static方法只能调用static方法或static属性;2、非static可以调用static方法和static属性

 


this:

代表类中的构造方法:this()

代表类中的属性:this.属性名

代表类中的方法:this.方法名()

提示:this()方法只能放在构造方法的首行,且不能放在非构造方法之中,注意不要弄成死循环


继承:

java学习日记_第1张图片

没有实例化父类对象,但在堆内存中存在父类和子类(Student的构造方法中省略了super())

如果没有父类没有无参构造,会报错,如图:

java学习日记_第2张图片

super和this都可以调用构造方法,super调用的是父类构造方法,this调用的是本类的构造方法。

不可以多重继承,错误实例:class C extends A,B{}

可以多层继承,例:class A {},class B extends A{},class C extends B{}

当有相同方法,会先找本类的方法,如果没找到,就去父类寻找

java学习日记_第3张图片

java学习日记_第4张图片


Overloading和Override的区别:

1、前者发生在同一类中,后者发生在继承关系中

2、前者权限没有限制,后者权限必须比被override的方法更低

3、前者的参数类型、个数不一致,后者完全一致;


Final:

final修饰的类不能被继承,final修饰的方法不能被覆写

java学习日记_第5张图片

java学习日记_第6张图片

B==C返回的是true,个人理解是在编译时期B就指向了字符串常量池,用final修饰的A在编译时期也确定了,存在字符串常量池里,所以C会指向B

java学习日记_第7张图片

java学习日记_第8张图片

可以查看:https://blog.csdn.net/qq_37734309/article/details/79983888


向上转型:

java学习日记_第9张图片

对参数进行统一的设计,只需关心子类的方法覆写,而不需要关心test方法传入的参数,如果使用test方法的重载,子类增多时,test方法就会越来越多,繁杂不简洁。


向下转型:

java学习日记_第10张图片

注意:发生向下转型的时候,必须发生向上转型,否则会发生ClassCastException异常!!!!

错误的代码示范:

java学习日记_第11张图片


instanceof:判断实例是不是制定类的对象

java学习日记_第12张图片

发生向上转型时:

java学习日记_第13张图片

向下转型时:-------当我们向下转型时,可以先判断是不是指定类的对象,然后再进行                        操作,因为可能会抛出转换异常

java学习日记_第14张图片

java学习日记_第15张图片


Object类:是所有类的父类,所有类实例化前都要调用Object的构造方法,可以接收所有引用数据类型

java学习日记_第16张图片

java学习日记_第17张图片


抽象类:普通类加上abstract关键字,里面包含抽象方法和普通方法。

java学习日记_第18张图片

抽象类不能直接实例化

抽象方法不能使用private

子类必须覆写抽象类中所有抽象方法

抽象类可以通过向上转型实例化

java学习日记_第19张图片

final和abstract不能同时出现,因为final不能被继承

抽象类可以有构造方法,和普通方法一样

java学习日记_第20张图片

抽象类中可以没有抽象方法

抽象类可以提供static方法,static不受结构或对象的局限

java学习日记_第21张图片

抽象类的好处:1、对子类方法的统一管理 2、自身提供一些普通方法且这些普通方法可以调用抽象方法


装箱和拆箱:将基本数据类型包装处理;将包装处理的数据变成基本数据类型

优点:可以实现Object类接收基本数据类型

java学习日记_第22张图片

Number类中的方法:

java学习日记_第23张图片

装箱操作和拆箱操作

java学习日记_第24张图片

自动装箱和自动拆箱

java学习日记_第25张图片

java学习日记_第26张图片

!!!!!

Integer -128-127 "=="返回true,超过范围就会new Integer(param);


接口:

当子类都需要增加功能时,可以在接口和子类中增加一个抽象类作为中间模块!

工厂设计模式:当子类扩充时,只需在Factory中增加即可

java学习日记_第27张图片

代理设计模式:一个接口有两个子类,其中一个子类是真实业务操作,没有代理业务,真实业务无法进行

java学习日记_第28张图片

java学习日记_第29张图片


抽象类和接口的区别:

  1. 定义名称不同:abstract class A {},interface A {}
  2. 组成不同:前者构造方法、抽象方法、普通方法、静态方法、全局常量、普通成员、static方法,后者抽象方法、全局常量、普通方法(jdk1.8之后新加)、static方法(jdk1.8之后新加)
  3. 权限不同:前者可以使用各种权限,除private,后者只能使用public
  4. 继承和实现:前者可以只能单继承,后者可以实现多个接口
  5. 两者关系:抽象类可以实现若干个接口,接口不允许继承抽象类,但允许继承多个父接口

相同点:

  • 都要子类继承或实现
  • 子类都必须覆写所有的抽象方法
  • 通过向上转型获取它们的实例

java学习日记_第30张图片


单例模式:只需产生一个实例(饿汉式)系统已加载时就创建好实例

(空间换时间)

java学习日记_第31张图片

理解:main方法不通过实例化直接产生,需要static属性和构造方法私有化;类中所有属性应该被封装,所以需要一个static方法返回实例;在返回实例的方法中,如果不加final,可以在getInstance中继续实例化,所以要加上final属性防止修改;

单例模式:(懒汉式)第一次使用的时候实例化,之后使用不实例化

(时间换空间)

java学习日记_第32张图片


多例模式:

      转别人的话,通俗易懂:

       比如说现在要定义一个星期时间数的类,那么他的对象只需要七个(天),再比如现在要写一个表示颜色基色的类,那么它的对象就只需要三个。同理一下Sex类只有两个性别,男和女

java学习日记_第33张图片


异常:Java提供的一种识别及响应错误的一致性机制。

出异常时,程序不能正常完成

java学习日记_第34张图片

使用try...catch()捕获之后程序可以正常完成

java学习日记_第35张图片

对于finally来说,有被捕获到的异常finally要输出,没有捕获到的异常也输出

对于程序来说,又被捕获到的异常正常输出,没有捕获到的异常不能正常输出

java学习日记_第36张图片

java学习日记_第37张图片

RuntimeException和Exception的区别

  • RuntimeException是Exception的子类
  • RuntimeException可以不需要强制进行处理,Exception必须强制性处理

RuntimeException种类:ArithmeticException,ClassCastException, IndexOutOfBoundsException,NullPointerException等等


内部类:可以轻松访问外部类的私有属性

java学习日记_第38张图片

 

你可能感兴趣的:(java)