概念知识
2.特殊值
0 0.0 -0.0 -无穷大 无穷大 NaN
int i=0;
double a1=-0.0; //不管是 0、0.0 -0.0 双等号的比较值
double a2= 0.0;
a1=1/0.0; //结果为Infinity
a1=1/-0.0; //结果为-Infinity
a1=0/0.0 //结果为NaN
3.取整
Math.ceil 向上取整 得到的是double类型
Math.floor 向下取整 结果是double类型
Math.round 四舍五入取整 如果传入double 返回long类型
如果传入float 返回值为int
加0.5向下取整
4.可变参数
约束1: 数量可变 类型不能变
约束2:一种方法最多只有一个可变参数,可变参数必须放在参数列表的最后
static void method( int ...a){ //定义一种方法 } static void method( int ...a,int i){ //语法错误 }
使用可变参数:
static void method (double...i){ System.out.println(i.length); System.out.println(i[0]); }
2.面向对象
1.类:用于描述具有相同特征(属性)和相同行为(方法)的对象
Java中用 class描述类关键词;
2.定义类:定义类中的成员、成员变量和方法。
成员变量:和以前的变量一样,成员变量位于任何方法之外。
成员方法:把static删除关键字,不添加是每个对象的行为。
对象:
对象Object是构成系统的基本单位;
创建对象:
类名 对象名= new 类名();
使用对象:
对象名.成员变量
调用成员方法:
对象名、方法名(参数列表);
2.变量作用域
全局变量(成员变量):
- 定义在方法的外部,类的内部,使用范围是整个类
- 不需要初始化
- 存储在堆内存中(物体存在时)
局部变量(方法中的变量):
- 定义在方法内部或句块内部,适用范围限于方法内部或句块内部
- 必须初始化
- 存储在堆内存中
3.this变量
就近原则存在
在方法中调用类中属性name,就要用到this标记使用的属性变量
class Person{ String String sex; int age;
void eat(){
String ="aaa"; 方法中也声明了一个name
System.out.println( "正在吃饭"); //this标记使用的属性变量
} }
成员方法:
- 语法
访问修饰符 返回值类型 方法名称(参数列表){
方法体
}
- 访问权限修饰符:public protected dafault private
- 返回值类型由返回值决定
- 成员变量可以直接用于成员方法,但是main如果在方法中调用成员变量和方法,则必须通过对象.属性名\调用方法名(参数列表)的形式
- 调用成员方法,直接写方法名(参数列表)
1.public 公共的
public装修时注意:
1.类文件中只有一个public类类必须与文件名一致.
2.main必须写下方法public类中.
2.private 私有的
只能在自己的类中访问
3 default 本包下的
在类当中 是不可以写 default 默认不能写
default 本包下的访问范围为 出包就不能访问
为何引入包:
默认使用本包下的所有类别。

若一类要使用两种重名类型,则需使用类全名进行标注;
例:com.easy1.Easy1 ee=new com.easy.Easy1();
默认介绍所有类别Java.lang包
Java.lang包声明了最常用、最基本的东西,不需要我们介绍
本包下除了private 都可以访问
不同包下 default 访问不到
private int siz=0;//封装起来 private int [] value=new int[16];//封装起来 //提供一种方法来读取数据 public int size(){ return this.size; }
并不是所有的封装都需要 getter/setter
程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系
- 继承的特点:
继承要有一定的层次结构,还有具有一定的可传递性
子类继承了父类的所有方法和属性,但不包括私有属性和构造方法
子类也可以有自己的属性和方法
Java只支持单继承,也就是说一个子类只能有一个父亲,父类可以有多个子类
- 继承可见减少代码重复,提高了复用性和维护性
- 继承让类于类之间产生了关系,类的耦合型增加了,父类发生变化子类也会跟着变化。
//子类继承父类()
public static void main(String[] args){
B b=new B();
System.out.println(b.surname);
b.test();//子类继承父类,子类就具有了父类中定义好可继承的属性和方法
}
class A{
String surname;
void test(){}
}
class B extends A{
}
格式:
访问修饰符 方法名称(参数列表){
方法体
}//
创建有继承关系的子类对象时,会执行父类中默认的构造方法,然后执行子类中相关的构造方法。
作用:初始化对象
每个类,系统会自动提供一个无参构造方法
public class Dkk {
String name;
public Demo(String name){
this.name=name;
}//构造方法
public static void main(String[] args){
Demo demo=new Demo();//这时就会报错,一旦定义了构造方法,
//系统默认的构造方法就会不存在
}
}
super关键字:
- 表示当前类的父类的调用
- 只能出现在有继承关系的子类中
- super两种用法:
1. super.属性名、super.方法名(参数列表)
表示父类的属性和方法,和子类中属性或方法重名时使用
2.super(参数列表)
子类继承父类 子类在执行构造方法的时候第一行默认是调用
父类的构造方法(系统自带)父类没有无参构造方法,子类必须定义构造方法
即必须调用父类的无参构造方法
Son(){
super("");
}
方法的重载:方法名一样,参数列表不一样
- 在方法名一样即为重载(不管返回值是否一致)
- public String test( int a,double b){ return"";}
- public void test( int a){ return"";}
只能通过参数列表来区分:参数类型、参数数量、参数顺序
方法的重写
定义:子类对父类中继承过来的方法进行重新定义
- 当父类中的方法无法满足子类的需求,子类可以对该方法进行重写
- 必须和父类的方法名,返回值,参数列表完全相同,并且访问修饰符的范围不能变小
@Override对是否重写进行注解
多态:
- 把父类对象指向子类对象的引用,就是把子类对象当作父类对象来使用
- 他可以调用父类中所有的成员属性和方法,(但不能在调用子类自己的属性和方法)
- 如果子类中有重写了父类的方法,那么执行这个方法时一定执行子类的重写方法
向上转型
- 多态本身就是子类类型像父类类型向上转型的过程
- 将子类对象转换为 父类对象就是向上转型(自动转换)
父类类型 对象名=new 子类类型();
- 可以使用更高级的指针指向子类的对象;
- 向上转型的对象可以调用父类中所有的普通方法和成员变量,但是只能调用子类中重写的方法
public void test(){
Son s=new Son();
//向上转型
Parent p=new Son();
p=new Son2();//Parent的另一个子类
}
public void demo(Parent p){
p.test();//向上转型调用父类中的方法
}
public static void main(String[] args){
Parent p=new Parent();
demo(p);
}
(大飞机小飞机都是飞机)