没有合适的资源?快使用搜索试试~ 我知道了~
本人在学习和工作中的总结,包括学习的心得和工作中遇到问题解决后的一些总结,细细品味,坚持看,肯定对Java编程有提高
资源推荐
资源详情
资源评论
1、数据类型
1.1 将对象作为方法的入参
将对象作为方法的入参时,如果方法体中,入参新生成一个对象,并修改其属性值时,那么
方法调用将不会改变传入的对象属性值。如果方法体中,对入参直接进行属性修改,那么方法
调用将会改变传输的对象属性值运行以下代码例子:
package com.neu.cyp;
public class Test {
public void chageStudent(Student stu) {
stu.age = 25;
// stu = new Student("lisi", 25);
}
public static void main(String[] args) {
Student stu = new Student("zhangsan", 20);
Test test = new Test();
// 将对象作为入参传递进行,此时,有两个引用变量
test.chageStudent(stu);
System.out.println("Student的年龄 : " + stu.age);
}
}
1.2 数组
数组使用的三个步骤:
一. 声明(以 为例)
二. 分配空间
三. 赋值
也可以讲分配空间和赋值合二为一。
此时数组中空间的大小有中的元素个数决定,因此中不能再有数字出现
注意二维数组的遍历:
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
System.out.print(b[i][j]+" ");
}
System.out.println();
}
1.3 String 类
1.3.1 String 两种实例化方式
类本身是一个类,在 类中定义了如下的构造方法:
!"#$!%
可以接受一个 类的对象,并重新实例化 对象,出了此方法只外
还可以采用直接复制的方式进行对象的实例化。
"&"$'( (")(*+'$
!""!**,'$
!"*-".$+'#*%
*/0!!$/11使用直接赋值的方式完成
*#/")/%11通过后遭方法完成
)*'($ (!#*2//2*%
此时,证明连个 类型的对象都实例化了。
1.3.2 String 的比较方式
2、static 与 this
2.1 static 方法中不能出现 this 关键字
34* 的描述:
.调用本类构造
.表示当前对象
3、new 的 含义
分配空间#生成对象%初始化属性值#先隐式即默认的,后显示%调用构造方法
传递对象首地址给引用变量。
注:(5. 类中存在 *-" 代码块和非 *-" 代码块;(*-" 代码块总是先于非
*-" 代码块执行,与代码的书写顺序无关;(*-" 代码块在类载入(不要特别在意什
么是载入,模糊理解就行)内存的时候只执行一次,而非 *-" 代码块在 对象的时
候执行,有几次 就会有几次非 *-" 代码块的执行。
4、构造方法
某一个类的构造方法中,4*#6%指调用本类中的某个构造方法* #6%指调用
父类的某个构造方法,4* 或 * 只能出现在构造方法调用的第一行,否则程序编译
错误。
(关于父子构造
父子类共有 种构造,即父类的隐式无参显式无参、显式有参;子类的隐式无参、
显式无参、显式有参。
父子构造无继承,但可以调用。
每个类 对象时,只能 自己的构造,而不能 父类构造,但子类构造里
面肯定会调用父类的构造。
子类构造可以调用父类构造有两种方式:显式和隐式调用显式又分为显式无参和
显式有参
子类中,每个构造方法(当然了,这里也包含了子类的隐式构造)中,如果第一
行没有 4*#6%或 * #6%调用,则默认调用父类的隐式或显式无参构造,此时,必
须要保证父类有无参的构造。
子类构造嵌套调用,最终肯定会有一个构造调用父类构造。
思考以下几个问题,了解就行:
7父子构造调用与静态代码块的执行顺序(应该是静态代码块先执行)
7多层继承中,方法重写的调用
7静态属性初始化顺序
(多层继承中,父子构造方法中的 4*(方法#%
说明:此处的方法都是子类重写了父类的方法
看以下代码,写三个类继承关系是:,$'! 分别如下:
类8
!""!**
!"!9:)"!
!".$+"!'#%
)*'($ (!#/生命/%
'! 类8
!""!**'!;+*
!"!9:)"!
!".$+"!'#%
)*'($ (!#/动物<</%
!"'!#%
4*("!'#%
,$ 类
!""!**,$;+*'!
!"!9:)"!
!".$+"!'#%
)*'($ (!#/狗/%
3* 类8
!""!**3*
!"*-".$+'#*%
,$+$,$#%
打印结果:
输出:
狗
生命周期:
总结:从以上结果可以看出,父子构造方法中的 4*(方法#重写的方法%看调用了哪
一级类的方法,主要看对象本身是哪一个类,从该类开始找方法,如果没有,再找其
父类的方法依次类推;而 4*(属性。则先从调用处构造方法所在的类找,如果找不到,
再找父类,依次类推。
=在使用 4* 调用构造方法的时候至少有一个构造方法是没有使用 4*#%调用的,而
此构造方法将做为调用的出口,一般这个出口都会使用无参构造完成。
5、关于父子引用与父子对象
5.1 这是 Java 面向对象的核心设计思想也是最主要的用法:
父引用子对象(
父引用(父方法#该方法一定是子类重写了父类的方法否则不能编译%
5.2 其它一些钻牛角尖的特殊方面
5.2.1
父引用子对象
父引用(子方法()11注意:此时的方法是子类独有的方法,而不是从父类继承也
不是从父类重写的方法,这样编译就会报错,
务必记住一点:父引用不管装的是父对象还是子对象,都不能(子方法#子类独有的
方法%,因为在编译某个类的时候,遇到引用.方法都是先编译引用所指类的父类,然
后再编译引用所指的类,两者合成引用所指类的整体,根本不会涉及到引用所指类的
子类,因为子类众多,因此不能父引用(子方法(
5.2.2
子引用#子类%父对象
父对象前面如果不加子类转换,编译会报错,而加上子类转换编译可以通过,但运
行的时候会出现 >.(!(:!**:*?;"-$
对于这些钻牛角尖的问题,了解就行,基本上是为了应付笔试和面试,真正项目中
谁这样写,就完蛋了。
6、抽象类(重点)
总结:抽象类可以有 *-" 和非 *-" 方法#指的都是非抽象方法%。-" 修饰的方
法必须要有方法体,即方法的实现。而非 *-" 的方法,有两种形式,一种是等待子类
去重写实现,而另一种有方法实现,主要用于子类对象直接使用,不能通过父类对象
使用,因为抽象类本身就不能直接 。
类中一旦有了一个用 *" 关键字修改的方法,则该类就为抽象类,此方法没有
方法体。该方法定义时 *" 关键字前面,只能用 !",$"+ 或 +9 ! 修饰,
@!*-" 不能有;抽象类中的非抽象方法定义与普通类中的方法定义完全一致。
如果一个类中,有用 *" 修饰的方法,则该类就为抽象类,类定义的时候,必
须用 *" 修饰。但一个抽象类中,可以不用定义一个抽象方法,钻牛角尖了。
6.1 语法
在学习中先不要去琢磨如何使用抽象类,先观察其语法。
抽象类:包含一个抽象方法的类称为抽象类抽象方法是只声明而未实现的方法。
所用的抽象方法必须使用 *" 关键字声明,所有的抽象类也需要使用 *" 关键
字声明。
package com.neu.cyp.abstractclass;
abstract class A {
public abstract void fun();
}
public class AbstractDemo01 {
public static void main(String[] args) {
A a=null;
a = new A();// 抽象类不能new(抽象方法没有实现体,new完后,无法调方法)
}
剩余63页未读,继续阅读
资源评论
JavaPeak
- 粉丝: 22
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功