java基础08
来源:互联网 发布:淘宝翡翠手镯 编辑:程序博客网 时间:2024/06/05 04:45
Math类:
API中对应的类:
字段摘要:成员变量
构造方法摘要:构造方法
方法摘要:成员方法
Math类要掌握的内容:
成员变量:
自然对数底数:public static final double E
圆周率:public static final double PI
Final 用于修饰字面值常量
成员方法:
随机数:public static double random()
绝对值:public static int abs(int a) 有承载方法
向上取整:public static double ceil(double a)
Eg:Math.ceil(12.567)=13.0
Math.ceil(12.345)=13.0
Math.ceil(-12.567)=-12.0
Math.ceil(-12.345)=-12.0
向下取整:public static double floor(double a)
最大值:public static int max(int a,int b)
最小值:public static int max(int a,int b)
次幂:public static double pow(double a,double b)
四舍五入:public static int round(float a)
原理:(int)Math.floor(a+0.5f)
正平方根:public static double sqrt(double a)
代码块
(1)由{}括起来的代码,就被称为代码块。
(2)分类及作用:
局部代码块:限定变量的生命周期,及时从内存释放,提高效率。
构造代码块:把所有构造方法中相同的代码抽取出来,提高代码复用性。
静态代码块:适用于在一个系统中只执行一次的代码。
(3)面试题:静态代码块,构造代码块,构造方法的执行顺序
静态代码块 > 构造代码块 > 构造方法
Person p=new Person()到底做了哪些事情:
A:通过类加载器把person.class文件加载进内存
B:在栈内存为p变量开辟空间
C:在堆内存,为Person对象开辟空间
D:对对象进行默认初始化,对对象的成员变量进行显式初始化。
E:假设有构造代码块,就先执行了构造代码块,如果没有,就执行构造方法对成员变量进行初始化。
F:到此对象已经初始化完毕
G:把对象所在的堆内存的地址值给p变量
面向对象之继承:
我们在定义一个类的时候可以在其他类的基础上扩充,不用重头开始,
Java是怎么描述继承的呢? Extends
定义格式
class subClass extends faClass{}
父类是怎么来的?
有多个类中相同的成员变量和成员方法抽取出来的
继承的好处:
A:提高代码的复用性
B:让类与类产生了一个关系,它是多态的前提
继承的特点:
A:Java中类只支持单继承,不支持多继承
B:Java类可以多层继承
什么时候用继承?
A:继承表达的是一种关系:is a。
所以。我们采用假设法即可。
举例:A和B两个类。
B:不要为了部分功能而去继承。
注意:不要为了部分功能而去继承。
应用场景:
继承体现了一种关系:is-a 的关系
具有相关联的联系
继承后子父间的成员关系
A:成员变量
a:如果名字不同,太简单了。
b:如果有名字相同的变量,在方法中使用的时候:
首先在局部范围找,有就使用。
然后在成员位置找,有就使用。
最后在父类成员位置找,有就使用。
实在没有就报错。
B:构造方法
a:子类并没有继承父类的构造方法。
b:子类的构造方法执行前会先执行父类的构造方法。
这个时候,并没有创建父类的对象,仅仅是对父类的内容进行了初始化。
注意:
如果父亲没有无参构造。
在子类中,要么用this(...)要么用super(...)
C:成员方法
a:如果名字不同,太简单了。
b:如果有名字相同的方法,是重写的表现形式。(覆盖,复写)
子类使用的是自己的。
方法重写:和父类方法声明相同的方法。跟父类方法一模一样即可。
详细讲解:
方法名相同,参数列表相同。
返回值类型小于等于父类的返回值类型。
权限修饰符大于等于父类的权限修饰符。
注意:
A:父类私有的方法不能被重写
B:静态方法只能被静态方法重写静态。
如果子类想使用父类的东西,可以通过一个关键字去调用。Super . 可以理解为父类的对象 引用。因为super代表的是父类的存储空间。
子父间的构造方法关系:(无法被继承)
在执行子类的构造方法前,会先执行父类的构造方法
注意:在子类的构造方法中,第一条语句的位置都隐藏了super();
在构造方法中,this()和super()这种用法只会存在一个
记住:任何类都默认继承Object类
子父类之间成员方法之间的关系:
本类的对象无法调用本类私有的成员
当子类中有和父类一模一样的方法的时候,子类使用的是自己的,这种现象
称为方法(覆盖)重写。
方法重写:
建议,子类和父类的模式一模一样。
方法声明相同。方法名必须相同,参数列表必须相同
返回值类型可以不同。(基本数据类型必须相同)
引用类型的时候,子类的返回值类型要是父类或者是父类返回类型的子类。
推荐:修饰符,返回值类型,方法名,参数列表都相同。
注意:
子类的访问权限一定要大于等于父类的权限
私有方法不能被重写。
静态只能被静态方法重写。
this 和 super的区别?应用场景?
this:是当前类的引用对象
super:是父类的存储空间标识,亦可以是父类的引用对象。
应用场景
成员变量:
构造方法:
成员方法:
方法重写和方法重载的区别?重载可以改变返回值类型吗?
方法重写:在不同类中,方法声明相同。(方法名和参数列表)
扩充:返回值类型可以小于等于父类返回值类型
权限修饰符要大于等于父类的权限修饰符
方法重载:在同一个类,方法名相同,参数列表不同。
重载可以改变返回值类型,因为它和返回值类型无关。
重载:overload
重写:override
构造方法问题:
子类在实例化的时候,会首先调用父类的构造方法。
在子类的构造方法中,默认有一个调用的无参构造方法。
假如父类并没有提供无参构造方法。
这个时候,代码就会报错,请问怎么解决?
使用super(..)调用父类带参构造方法
使用this(..)调用本类的其它构造方法
子类的实例化过程:子类会具备父类的实例化过程
面向对象的三大特征:封装、继承、多态
Final关键字:
最终的意思,它可以修饰类,成员变量,成员方法。
特点:它修饰的方法不能被重写
它修饰的成员变量是一个常量。
数据类型 变量名=初始化值;
常量修饰符 数据类型 常量名=初始化值;
它修饰的类不能被继承。
注意:final定义的变量必须给值,在什么时候给值?
在定义的时候就给值。一般都是这样用的。
(面试)还有没有其他的时候给赋值的情况?
在构造方法执行完毕之前进行赋值都可以。构造方法里,代码块里赋值。
Final修饰基本数据类型:表示值不能改变。
Final修饰引用数据类型:地址值不能改变,而对象的成员变量可以改变
案例:
/*final修饰基本类型变量:表示值不能改变。final修饰引用类型变量:表示地址值不能改变,而该对象的内容是可以发生改变的。*/class Demo {public void show(final int x) {//x = 20;System.out.println(x);}public void print(final Student s) {s.age = 100;System.out.println(s.age);}}class Student {int age = 20;}class FinalTest2 {public static void main(String[] args) {Demo d = new Demo();d.show(10);Student s = new Student();d.print(s);}}
- java基础问题08
- java基础08 异常
- Java基础08 继承
- java基础08
- Java基础-08
- Java基础08 继承
- Java基础08 继承
- Java基础08 继承
- Java基础08GUI
- java基础08:数学
- Java基础08 继承
- 黑马程序员 Java基础 08
- 黑马程序员-Java基础08
- 【Java基础08_2】继承
- java基础篇--08<java网络编程>
- Java基础01:基础
- Java基础:基础加强
- Java基础-基础
- 火狐调试flex注册js报错问题
- Java设计模式之从[魔兽世界副本]分析原型(Prototype)模式
- 黑马程序员_Java基础加强笔记:类加载器
- Android中关于Volley的使用(八)缓存机制的深入认识
- The h.264 Bitstream(h.264码流)
- java基础08
- TM波段组合
- TreeSet要求加入的所有元素都可以相互比较大小;可以控制比较位置来决定排序方向;hashset只能比较可相等不能比较大小
- c 语言中的位域
- java异常处理机制
- JFrame显示层次问题
- hdu1247字典树
- 用C语言编程操作计算机串口的问题
- 三角形面积