java基础知识点总结
- 格式:doc
- 大小:34.00 KB
- 文档页数:6
1.什么是对象?
对象是确定的、具体的一个事物。
比如一个学生就是一个对象:这个学生有姓名、身份证、年龄等属性,有学习、吃饭
睡觉等行为。
2.什么是类?
类是相同或相似对象的一个抽象,是对象的一个模板,是相同或相似对象的行为和属性的一个集合。
3.局部变量和成员变量
局部变量:定义在一个方法中的变量,局部变量的作用域只在这个方法中生效;
成员变量:定义在类中的变量,成员变量的作用域在整个类中生效;
注意:在相同的方法中,不能有相同名字的变量,在不同的方法中可以有相同名称的变量。
当局部变量和成员变量同名时,局部变量的的优先级更高。
4.构造方法
构造方法和类同名,且没有返回值
有public class Student(){}这个类;
构造方法为public Student(){} 无参构造方法
有参构造方法public Student(int age,String name){
this.age = age;
= name;
}
注意:1.如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,这个构造方法什么也不做。
2.如果有写构造方法,系统不会默认生成构造方法。
3.构造方法的重载,名字相同,但参数不同,调用时会根究不同的参数选择相应的用法。
5.引用与对象实列
Object ob1 = new Object();
Object ob2 = ob1;
System.out.println(ob1 == ob2);
1.第一个语句创建了Object对象的一个实列,那么ob1真的就是Object对象吗??????
2.其实这里只是创建了一个Object对象的引用,这和c语言中的中的指针相似,只是创建了一个对象的引用,指向了了Objcet对象。
3.第三个语句输出结果为true,因为连个变量内存地址相同。
6.static
java中被static修饰的成员被称为静态成员或者类成员,它属于整个类所有,而不是属于某个对象。
静态成员可以通过类名直接访问,也可以通过对象访问。
静态方法:被static方法修饰的方法被称为静态方法。
7.final
(1)final修饰符可以修饰类、方法、变量和属性;
(2)final修饰类,该类不能被继承,为最终类;
(3)final修饰方法,该方法不能被覆盖(重写);
(4)final修饰属性,类的属性不能进行隐式初始化或在构造方法中赋值;
(5)final修饰变量,该变量只能被赋值一次,即为常量。
8.权限修饰符
权限修饰符可以用来限制属性和方法的访问范围
访问修饰符 本类 同包 子类 其他
private 是
默认 是 是
protected 是 是 是
public 是 是 是 是
9.封装
封装即隐藏对象的属性和实现细节,仅对外公开接口,控制程序中对属性读和修改的访问级别
这样做有什么好处?
只能通过规定的方法访问数据。
隐藏类的实例细节,方便修改和实现。
我们在开汽车的时候,只用去关注如何开车,我们并不在意车子是如何实现的,这就是封装。
如何去实现类的封装呢?
修改属性的可见性,在属性的前面添加修饰符 (private)
对每个值属性提供对外的公共方法访问,如创建 getter/setter(取值和赋值)方法,用于对私有属性的访问
在 getter/setter 方法里加入属性的控制语句,例如我们可以加一个判断语句,对于非法输入给予否定。
10.this
this表示当前对象,通过this.属性访问当前对象属性,通过this.方法调用当前对象的方法。
11.继承
类和类的继承可以看作是一种衍生关系,比如动物类可以是狗类的父类。
注意(1)子类拥有父类出private以外的所有属性和方法;
(2)子类可以拥有自己的属性和方法
(3)子类可以重写父类的方法;
(4)java中的继承为单继承,一个类只有一个父类
java实现多继承的方法是实现implements接口,但接口不能有非静态的属性
12.super
super 关键字在子类内部使用,代表父类对象。
访问父类的属性 super.属性名。
访问父类的方法 super.bark()。
子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()。
13.方法的重载和重写
重载:在一个类中可以定义多个同名方法,但是这些方法的参数类型或者参数个数不同。
注意:方法中的参数列表必须不同(类型或个数);
可以有不同的返回值,但参数必须不同;
可以有不同的权限修饰符;
可以抛出不同的异常。
重写:子类可以继承父类的方法,但是如果对父类的方法不满意,可以重写父类中的方法,在调用是优先调用子类方法,
重写是必须跟父类保持一样的语法,比如返回值、参数类型和个数、方法名都必须相同。
14.多态
多态是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。多态也称作动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
通俗地讲,只通过父类就能够引用不同的子类,这就是多态,我们只有在运行的时候才会知道引用变量所指向的具体实例对象。
多态的实现条件:
Java 实现多态有三个必要条件:继承、重写和向上转型(即父类引用指向子类对象)。
只有满足上述三个条件,才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。
多态的实现方式:
Java 中多态的实现方式:继承父类进行方法重写,抽象类和抽象方法,接口实现。
15.数组
在计算机语言中数组是一个非常重要的集合,大部分数组都有以下特征:
(1)一致性:数组只能保存相同类型的数据,元素的数据类型可以是任意相同的元素
(2)有序性:数组中的元素是有序的,通过下标访问。
(3)不可变性,数组一旦初始化,长度不可变。
java中数组下标是从0开始的,intArray[0]访问的是数组第一个元素。
数组分类:
一维数组
当数组只有一个下标时,这个数组就是"一维数组"。因为数组是引用数据类型,所以在使用数值之前必须进行声明和初始化。
(1)数组声明
数组声明就宣告这个数组中的元素类型,数组变量名。
第一种方式:int[] intArray;//从面向对象都角度来看,java更推荐常用的数组声明
方式,将int[]看作一个整体
第二种方式:int array[];//从面向对象角度来看,这种方式是c语言中的声明方式
(2)数组初始化
数组声明就要进行初始化,数组初始化就是给数组的每一个元素分配一个空间,初始化后数组长度就确定了,就不能在更改。
静态初始化:
int[] array;
//数组静态初始化
array = {21,23,435,56};
String[] arr2;
//数组静态初始化
arr2 = {"张三","李四","王五"};
动态初始化
int[] array = new int[4];
不知道数组的内容情况,采用new的方式来进行初始化。
数组默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char \u0000
boolean false
引用 null
多维数组
多维数组声明:
int[][] array;
int array[][];
int[] array[];
多维数组静态初始化:
int[][] array = {{1,2,4},{5,6,7},{8,9,10}};
多维数组动态初始化:
int[][] array = new int[4][3];//4*3= 12个元素
多维数组中的不规则数组:
int[][] array = {{1,2,3},{34},{5,6,7,8,9}};
不规则数组动态初始化:
先进行高维数组初始化,在进行逐一低维数组初始化
int[][] array = new int[3]//先初始化高维数组4
//对低维数组逐一初始化
array[0] = new int[3];
array[1] = new int[1];
array[2] = new int[5];
不规则数组访问:
public class 不规则数组 {
public static void main(String[] args) {
//不规则数组静态初始化
int[][] array = {{1,2,3},{12},{4,5,6,7}};
//不规则数组动态初始化
int[][] array1 = new int[3][];//先进行高维数组初始化
//逐一进行低维数组初始化
array1[0] = new int[3];
array1[1] = new int[1];
array1[2] = new int[4];
//不规则数组访问---使用for循环
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
//使用增强for循环进行
for (int[] row: array) {
for (int col: row) {
System.out.println(col);
}
}
}
}
16.字符串
java中的字符串采用Unicode编码,如下举例:
String str = "Hello ,world";
String str1 = "你好,世界";
String str2 = "123";
String str3 = "A";
字符串还有一种极端情况,就是空字符串 String str = "";
而不是null,前者是分配内存空间的,而null不分配内存空间。
java中提供了三个字符串类,String、StringBuffer和StringBuilder,其中String是不可变的,StringBuffer和StringBuilder是可变的。