---恢复内容开始---
前记
虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master
标识符
- 标识符是由字母、_、$或数字组成
- 标识符应以字母、下划线、$开头(不能以数字开头)
- java标识符大小写敏感,长度无限制
java变量
变量本质上是内存中的一小块区域,使用变量名来访问这块区域。每个变量使用前必须要先申 ,然后必须进行赋值,才能使用
double d1,d2,d3 = 0.123;//只有d3是0.123
方法的作用域:出了大括号 没人认识了
面向对象部分
类和对象:类可以看成一类对象的模板,对象可以看成该类的一个具体实例
关联关系:一个类的方法参数是另一个类的对象 (最弱的关系)
继承关系:xx是一种xx(一般和特殊)
聚合关系:(整体和部分)聚集 、组合(更严格,密不可分)
实现关系:
应该有 多少个类多少个对象-》这些类和对象里有多少属性和方法-》类和类之间的关系
定义成员变量时可以对其初始化,如不对其进行初始化,java使用默认的值对其进行初始化
java语言中除基本类型之外的类型都称为引用类型,引用类型占两块内存,一块是地址,另一块是new出来的东西 放在堆内存里
如何在内存中区分 类 和 对象:
类是静态的概念,位于代码区
对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)
构造方法
使用new+构造方法 创建一个新对象;当没有制定构造函数时,编译器为类自动添加形如 类名(){}的构造函数
this
在类的方法定义中使用的this关键字代表使用该方法的对象的引用
当必须指出当前使用方法的对象是谁时要使用this
有时使用this可以处理方法中成员变量和参数重名的情况
this可以看作是一个变量,它的值是当前对象的引用
static 关键字
在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员共享
用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给他,所以在static方法中不可访问非static的成员
静态方法不再是针对某个对象调用,所以不能访问非静态成员
可以通过对象引用或类名访问静态成员
Java权限修饰符public protected private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限
修饰符 |
类内部 |
同一个包 |
子类 |
任何地方 |
Private |
y |
|
|
|
Default |
Y |
y |
|
|
Protected |
Y |
y |
y |
|
Public |
Y |
y |
y |
y |
继承能把父类所有的东西都继承下来,但是 private和default不能访问
对于class的权限修饰只可以用public和default
Public类可以在任意地方被访问
Default类只可以被同一个包内部的类访问
类的继承与权限控制
Java中使用extends关键字实现类的继承机制 (xx是一种xx)
通过继承,子类自动拥有了基类的所有成员(成员变量和方法)
Java只支持单继承,不允许多继承(一个子类只能有一个基类 一个基类可以派出多个子类)
方法的重写 overwrite
在子类中可以根据需要对从基类中继承来的方法进行重写
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限
---恢复内容结束---
前记
虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master
标识符
- 标识符是由字母、_、$或数字组成
- 标识符应以字母、下划线、$开头(不能以数字开头)
- java标识符大小写敏感,长度无限制
java变量
变量本质上是内存中的一小块区域,使用变量名来访问这块区域。每个变量使用前必须要先申 ,然后必须进行赋值,才能使用
double d1,d2,d3 = 0.123;//只有d3是0.123
方法的作用域:出了大括号 没人认识了
面向对象部分
类和对象:类可以看成一类对象的模板,对象可以看成该类的一个具体实例
关联关系:一个类的方法参数是另一个类的对象 (最弱的关系)
继承关系:xx是一种xx(一般和特殊)
聚合关系:(整体和部分)聚集 、组合(更严格,密不可分)
实现关系:
应该有 多少个类多少个对象-》这些类和对象里有多少属性和方法-》类和类之间的关系
定义成员变量时可以对其初始化,如不对其进行初始化,java使用默认的值对其进行初始化
Java权限修饰符public protected private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限
修饰符 |
类内部 |
同一个包 |
子类 |
任何地方 |
Private |
y |
|
|
|
Default |
Y |
y |
|
|
Protected |
Y |
y |
y |
|
Public |
Y |
y |
y |
y |
继承能把父类所有的东西都继承下来,但是 private和default不能访问
对于class的权限修饰只可以用public和default
Public类可以在任意地方被访问
Default类只可以被同一个包内部的类访问
类的继承与权限控制
Java中使用extends关键字实现类的继承机制 (xx是一种xx)
通过继承,子类自动拥有了基类的所有成员(成员变量和方法)
Java只支持单继承,不允许多继承(一个子类只能有一个基类 一个基类可以派出多个子类)
方法的重写 overwrite
在子类中可以根据需要对从基类中继承来的方法进行重写
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限
java语言中除基本类型之外的类型都称为引用类型,引用类型占两块内存,一块是地址,另一块是new出来的东西 放在堆内存里
如何在内存中区分 类 和 对象:
类是静态的概念,位于代码区
对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)
构造方法
使用new+构造方法 创建一个新对象;当没有制定构造函数时,编译器为类自动添加形如 类名(){}的构造函数
this
在类的方法定义中使用的this关键字代表使用该方法的对象的引用
当必须指出当前使用方法的对象是谁时要使用this
有时使用this可以处理方法中成员变量和参数重名的情况
this可以看作是一个变量,它的值是当前对象的引用
static 关键字
在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员共享
用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给他,所以在static方法中不可访问非static的成员
静态方法不再是针对某个对象调用,所以不能访问非静态成员
可以通过对象引用或类名访问静态成员
super
1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
7)super()和this()均需放在构造方法内第一行。
8)尽管可以用this调用一个构造器,但却不能调用两个。
9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块
11)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
Object
equals()
getclass()
hashcode() 返回hash编码
toString() public String toString()方法,其返回值是String类型;在进行String与其他类型数据的连接操作时,将自动调用该对象类的toString()方法;可以根据需要重写toString()方法
equals
object类中定义有:
public boolean equals(Object obj)方法 提供定义对象是否相等的逻辑
Object的equals方法定义为:x.equals(y)当x和y所引用的对象是同一类对象且属性内容相等时,返回true否则返回false
J2SDK提供的一些类,如String,Date等,重写了Object的equals方法
对象转型(casting)
一个基类的引用类型变量可以指向其子类的对象
一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)
可以使用引用变量instanceof类名来判断该引用型变量所指向的对象是否属于该类或该类的子类
子类的对象可以当作基类的对象来使用称作向上转型upcasting,反之成为向下 downcasting
动态绑定和多态
动态绑定是指 在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法
多态的必要条件:
要有继承 要有重写 父类引用指向子类对象