JAVA基础
1.三大特性
JAVA有三大特性,分别是:封装、继承和多态。
- 封装
封装就是把描述一个对象的属性和行为的代码封装在一个类中,有些属性是不希望公开的,或者说被其他对象访问的,所以我们使用private修饰该属性,使其隐藏起来;类中提供了方法(用public修饰),常用的是get、set方法,可以操作这些被隐藏的属性,其他类可以通过调用这些方法,改变隐藏属性的值!
封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。 - 继承
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,使用extends关键字实现继承;子类中可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。 - 多态
多态就是在声明时使用父类,在实现或调用时使用具体的子类;即不修改程序代码就可以改变程序运行时所绑定的具体代码,
2.数据类型
Java是一个强类型语言,Java中的数据必须明确数据类型。在Java中的数据类型包括基本数据类型和引用数据类型 两种。
- 基本数据类型
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数 | byte | 1 | 负的2的7次方 ~ 2的7次方-1(-128~127) |
- | short | 2 | 负的2的15次方 ~ 2的15次方-1(-32768~32767) |
- | int | 4 | 负的2的31次方 ~ 2的31次方-1 |
- | long | 8 | 负的2的63次方 ~ 2的63次方-1 |
浮点数 | float | 4 | 1.401298e-45 ~ 3.402823e+38 |
- | double | 8 | 4.9000000e-324 ~ 1.797693e+308 |
字符 | char | 2 | 0-65535 |
布尔值 | boolean | 1 | true,false |
在JAVA中整数默认是int型,浮点数默认是double型。
- 引用数据类型
引用数据类型只有三种,分别是class、interface、数组。
3.类型转换
在Java中,一些数据类型之间是可以相互转换的。分为两种情况:自动类型转换和强制类型转换。
- 自动类型转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的。 - 强制类型转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。
3.1自动装箱和自动拆箱
简单的说,装箱就是就是将基本数据类型转换为包装器类型;拆箱就是将包装器类型转换为基本数据类型。
3.2 基本数据类型对应的 包装类的区别
- 包装类必须实例化后才能使用,基本数据类型不需要。
- 包装类是对象的引用,指向此new的对象,
- 包装类的 默认值是null,基本类型有默认值
4.Java 修饰符
用来定义类、方法或者变量,通常放在语句的最前端。修饰符分为 访问修饰符、非访问修饰符。
- 访问修饰符
java中的4种访问权限
public :对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
default :在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private· :在同一类内可见。使用对象:变量、方法。 - 非访问修饰符
static :用来修饰类、方法和变量。
final :用来修饰类、方法和变量:
abstract :用来创建抽象类和抽象方法。
synchronized 和 volatile:主要用于线程的编程。
5.Java 方法中重载和重写
- 重载
- 条件 :1、同一个类中,2、方法名称相同,3、参数列表不通
- 作用:传递不同的参数,实现不通的效果。
- 特点:1、与访问修饰符和返回值类型无关,2、与异常无关
- 重写
- 条件:必须要存在继承的关系。
- 作用:父类的功能无法满足子类的需求时。
- 其他注意事项
____1、父子类方法间的方法名称,参数列表须一致。
____2、子类的权限修饰符需大于等于父类的权限修饰符。
____3、子类的返回值要小于等于父类的返回值类型。
____4、子类抛出的异常要小于等于父类抛出的异常类型。
6.Java到底属于值传递还是引用传递
-
实参与形参的定义
-
形式参数:在定义一个方法时,定义使用的参数就是形式参数。
-
实际参数:在调用一个方法时,传递的参数就是实际参数。
-
值传递和引用传递定义
-值传递:在调用一个方法时将实际参数复制一份传递给形参中,在方法中对参数进行修改,不会影响实际参数。 -
引用传递:在调用一个方法时,将实际参数的地址值传递到方法中,在方法中对参数进行的修改影响到实际参数。
详见:点击此处
7.synchronized与Lock简述
类别 | synchronized | Lock |
---|---|---|
存在层次 | Java的关键字、在jvm层 | 是一个类 |
锁的释放 | 1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁 | 在finally中必须释放锁,不然容易造成线程死锁 |
锁的获取 | 假设A获得锁,B等待,若A阻塞,B会一直等待 | Lock有多个获取锁的方式,可以尝试获取锁,不用一直等待 |
锁状态 | 无法判断 | 可以判断 |
锁类型 | 可重入 不可重点 非公平 | 可重入 可判断 可公平(两者皆可) |
性能 | 少量同步 | 大量同步 |
详见:点击此处
- …后续加载中…