面向对象语言有如下基本特征
Java开发环境
首先把源文件/.java文件编译成字节码文件,即类文件/.class文件,然后由解释器负责解释执行类文件。
程序的运行需要一定的硬件和软件环境,这个环境被称为平台
大部分平台可以看作操作系统和硬件的集合,但Java平台不同,他是运行在其他平台上的软平台。
Java平台包括Java应用程序接口/API和Java虚拟机/Java virtual machine,JVM。
Java应用程序接口/API是经过编译的,可以在程序中直接使用的Java代码标准库。
Java虚拟机负责解释和执行Java程序。
基本数据类型与表达式
标识符:>首字母:大小写字母A~Z,下划线_,$
后面字母:上述字母或者数字0~9中的一个。
保留字关键字不可作标识符。
基本数据类型:
byte short int long float double
字节: 1 2 4 8 4 8
长度: 8 16 32 64 32 64
最小值:-128 -2^15 -2^31 -2^63 -2^-149. 2^-1074
最大值:127 -2^15-1 …… …… (2-2-23)*2127 (2-2-52)x21023
//进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;//十进制
int i2=010; //八进制
int i3 =0x10; //十六进制
sout(i); //10
sout(i2); //8
sout(i3; //16
基本数据类型默认值:0
boolean类型数据默认:false
引用类型元素默认:null
声明一个引用变量仅仅是预定了变量的存储空间,此时并没有对象的生成。
Customer tom;//类名首字母大写,其余遵循驼峰命名;
方法名,变量名,首字母小写,其余遵循驼峰命名
包名:小写
下面代码生成新的实例/对象,在内存中给对象分配空间,并将对象的引用赋给引用变量
tom=new Customer();
数据成员
Java类道德状态用数据成员变量来表示。声明成员必须给出变量名及其所属的类型,同时还可以指定其他属性。声明格式如下:
public/protected/private [static] [final] [transient] [volatile] 变量数据类型
▷访问控制符 静态成员变量 共享变量
变量值不可改 临时变量
变量名[=变量初值];
static
没有static修饰的变量为实例变量;有static修饰的为类变量/静态变量。
实例变量用来存储所有实例都需要的属性信息。
有些属性对类中所有对象都相同,对于这样的属性变量,就可以声明为类变量。
实例变量调用: 实例名.实例变量名
类变量调用:类名|实例名.实例变量名
方法成员
一个方法可以有0~n个参数;方法声明时的参数为形式参数。参数的传递方式有:值传递及引用传递。
参数类型为基本类型时:值传递,参数类型为对象类型/数组时,采用引用传递。
方法成员也分为实例方法和类方法/静态方法;
实例方法:表示特定对象的行为,在声明时前面不加static修饰
类方法:表示具体实例的类中对象的共有行为。
public class Demo {
int id;
static int sid;
public void a(){
System.out.println(id);
System.out.println(sid);
System.out.println("------a");
}
//1.static和public都是修饰符,并列的没有先后顺序,先写谁后写谁都行
static public void b(){
//System.out.println(this.id);//4.在静态方法中不能使用this关键字
//a();//3.在静态方法中不能访问非静态的方法
//System.out.println(id);//2.在静态方法中不能访问非静态的属性
System.out.println(sid);
System.out.println("------b");
}
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
//5.非静态的方法可以用对象名.方法名去调用
Demo d = new Demo();
d.a();
//6.静态的方法可以用 对象名.方法名去调用 也可以 用 类名.方法名 (推荐)
Demo.b();
d.b();
}
}
重写/重载/构造器
-
构造器;
构造器:没有任何参数的构造器我们叫做:空参构造器–》空构造器。构造器的格式:
[修饰符] 构造器的名字(){
}
public Person(){//构造器名字必须和类名相同 }
构造器和方法的区别:
1.没有方法的返回值类型
2.方法体内部不能有return语句
3.构造器的名字很特殊,必须跟类名一样
构造器的作用:不是为了创建对象,因为在调用构造器之前,这个对象就已经创建好了,并且属性有默认的初始化的值。
调用构造器的目的是给属性进行赋值操作的。
注意:我们一般不会在空构造器中进行初始化操作,因为那样的话每个对象的属性就一样了。
实际上,我们只要保证空构造器的存在就可以了,里面的东西不用写
-
重载
总结:
1.方法的重载:在同一个类中,方法名相同,形参列表不同的多个方法,构成了方法的重载。
2.方法的重载只跟:方法名和形参列表有关,与修饰符,返回值类型无关。
3.注意:形参列表不同指的是什么?
(1)个数不同
add() add(int num1) add(int num1,int num2)
(2)顺序不同
add(int num1,double num2) add(double num1,int num2)
(3)类型不同
add(int num1) add(double num1)
4.请问下面的方法是否构成了方法的重载?
(1)add(int a) 和 add(int b) —>不构成,相当于方法的重复定义
(2)public static int add(int a) 和 public static void add(int b) —>不构成
-
-
重写
【1】重写:
发生在子类和父类中,当子类对父类提供的方法不满意的时候,要对父类的方法进行重写。
【2】重写有严格的格式要求:
子类的方法名字和父类必须一致,参数列表(个数,类型,顺序)也要和父类一致。
英文 | 位置 | 修饰符 | 返回值 | 方法名 | 参数 | 抛出异常 | 方法体 | |
---|---|---|---|---|---|---|---|---|
重载 | overload | 同一个类中 | 无关 | 无关 | 必须相同 | 必须不同 | 无关 | 不同 |
重写 | override | 子类父类中 | 父类的权限要低于子类的 | 父类的返回值大于子类 | 必须相同 | 必须相同 | 小于等于 | 不同 |
修饰符
同一个类 | 同一个包 | 子类 | 所有类 | |
---|---|---|---|---|
private | * | |||
default | * | * | ||
protected | * | * | * | |
public | * | * | * | * |
总结:
属性,方法:修饰符:四种:private,缺省,protected,public
类:修饰符:两种:缺省,public
以后写代码
一般属性:用private修饰 ,方法:用public修饰
异常处理机制
-
抛出异常
-
捕获异常
异常处理五个关键字:try,catch,finally,throw,throws
int a=1,b=0; try{ sout(a/b); }catch(ArithmeticException e){ sout("程序出现异常,变量b不能为0") }finally{ sout("finally") } //finally 可以不要. //快捷键ctrl+alt+t
引用数据类型(3种)
- 引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时候被指定为一个特定的类型,声明之后不能改变。
- 引用数据类型包括:类(对象)、接口、数组。
- 所有引用类型默认值都是null.
- 一个引用变量可以用于引用任何与之兼容的类型。