Java基础知识

八大基本类型:

 byte short int Long float double char boolen 

类里定义的变量叫 : 成员变量
方法里面定义的变量叫 : 局部变量

this关键字:

this关键字,作用是用来记录当前方法是被哪个对象调用的,
哪个对象调用方法,this就记录哪个对象.

可以解决:成员变量和局部变量重名的方法

super关键字:

标识父类内容的关键字,也可以区分 子父类重名的成员变量
构造里面默认有个 super()

Static关键字:

static关键字: 它是一个修饰符,可以修饰类中的成员变量,成员方法。

特点: 被static修饰的成员变量我们称为类变量(静态变量),修饰的方法称为:类方法(静态方法)
被static修饰的内容是所有对象共享的,所有和对象无关,只和当前的类相关,因此被static修饰的成员,访问的方式是使用类名.成员(变量,方法);

静态代码块: 在类加载的时候就执行  在成员变量位置 用static{内容}

final关键字:

类不能继承,方法不能重写,变量不能改变

类加载的过程:

JVM从上往下逐行加载 
1.把静态的加载到方法区静态区域 非静态的加载到方法区非静态区域
2.给静态的成员变量 付默认值,然后在显示赋值
3.在2的时候  如果遇到静态代码块就执行静态代码块

构造方法: public 类名{}

创建类默认有一个无参构造方法
new 出来对象  其实就是调用无参构造创建的

当类中有了有参构造,默认的无参构造将被覆盖,所以需要重新书写无参构造

构造代码块:

构造代码块执行优先于构造方法
写在类的成员位置,方法外

{所有构造方法都需要执行的代码写到这里}   <---- 这就是构造代码块

构造方法也是方法 也可以被重载     (无参构造,有参构造就是重载)

继承:

extends关键字, 子类可以使用父类 非私有成员
父类里面定义的是 事物共性的  属性(成员变量)和行为(方法)

成员变量的特点:
	子类可以直接访问父类非私有的成员变量
	子类访问 父类的成员变量用 : super.父类成员变量名
	
成员方法的特点:
	子类可以访问父类的非私有成员方法
	子类和父类方法重名: 就近原则 优先子类的, 如果需要访问父类的 需要super.成员方法
	
构造方法的特点:
	必须和类名一致,构造方法不能被继承
		
	构造方法的执行过程: 和对象创建过程差不多
	1. new会在堆中开辟空间。
	2. 加载非静态的成员变量。
	3. 给所有的非静态成员变量默认初始化
	4. 调用与传递参数一致的构造方法。 构造方法的执行有隐式的3步。
		1. super();  // 调用父类的构造方法,给父类的成员变量赋值,然后让子类使用。
		2. 成员变量显示赋值。
		3. 执行构造代码块
		4. 开始执行构造方法本身的代码
	5. 当构造方法执行结束表示对象创建完成。
当父类中,没有默认的无参构造时,子类的super()语句,则调用不到父类的无参构造。子类需要手动调用父类的有参构造。	

方法重写:

子类重写父类方法的时候 权限需要大于或等于父类.
必须和父类的 : 方法名相同,参数类表相同,返回值相同 

方法重载:

方法名相同,参数类型 参数位置不同
方法的返回值类型 可以相同 也可以不同

抽象类: abstract 里面全是抽象方法

有抽象方法的类,当前类必须也声明是抽象类
抽象类不能创建对象, 因为抽象方法没有方法体 没有任何意义
抽象类有构造方法,是给子类创建对象时候构造里的super用的

接口:

接口是扩展额外的功能的,接口只封装了方法.
接口中没有构造方法,所以不能创建对象

接口中不能有变量,但是可以有常量,固定不变的值

接口中可以定义四种方法: 
	抽象方法 JDK1.7之前 : public abstract 返回值类型 方法名(参数)
		
	默认方法 JDK1.8 : public default 返回值类型 方法名(参数){方法体}
			可以重写也可以不重写
			如果实现两个接口里面的默认方法名一样,则必须重写
		
	静态方法 JDK1.8 : public static 返回值类型 方法名(参数){方法体}
			直接 接口名.方法名 使用
			静态方法不能重写
		
	私有方法 JDK1.9: private static 返回值类型 方法名(参数){方法体}
			给接口内部的 默认方法和静态方法使用的 

多态:
多态的前提: 必须有继承和实现的关系
Java中: 父类引用指向子类对象
语法:
父类 变量名 = new 子类()
接口 变量名 = new 实现类()

多态对象在使用的时候: 
		多态会产生类型的向上提升, 只能调用父类的成员
		编译时期 只关注父类  (所以子类 类型提升 是为了欺骗虚拟机可以编译成功)

解决弊端: 
	只能访问父类的成员,是因为子类类型向上提升.	
	解决:	
		将提升为父类的子类,向下转型
		
多态使用成员变量和成员方法注意:
	编译时期状态: 只关注父类是否存在当前对象访问的成员
	运行时期状态: 
			成员变量: 访问运行的依然是父类的成员变量
			成员方法: 访问子类重写的方法   如果子类没有 那就调用父类

集合:

数组的长度不可变
集合就是一个容器,可以自动扩容.因为底层是数组,扩容的时候每次新创建一个数组
new ArrayList()   初始容量为10 , 第十一个就开始 自动扩容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoBugsBoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值