首页 / JAVA / Java基础知识03
Java基础知识03
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java基础知识03,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5711字,纯文字阅读大概需要9分钟。
内容图文
一、Java面向对象3
1. 数组
(1) 数组:存储同一种数据类型的多个元素的容器。
二、Java面向对象4
1. 形式参数和返回值的问题
(1) 形式参数:
类名:需要该类的对象
抽象类名:需要该类的子类对象
接口名:需要该接口的实现类对象
(2) 返回值类型:
类名:返回的是该类的对象
抽象类名:返回的是该类的子类对象
接口名:返回的是该接口的实现类的对象
(3) 链式编程
对象.方法1().方法2().......方法n();
这种用法:其实在方法1()调用完毕后,应该返回一个对象;
方法2()调用完毕后,应该返回一个对象。
方法n()调用完毕后,可能是对象,也可以不是对象。
2. 包
(1) 其实就是文件夹
(2) 作用:
A:区分同名的类
B:对类进行分类管理
a:按照功能分
b:按照模块分
(3) 包的定义
package 包名;
多级包用.分开。
(4) 注意事项:
A:package语句必须在文件中的第一条有效语句
B:在一个java文件中,只能有一个package
C:如果没有package,默认就是无包名
(5) 带包的编译和运行
A:手动式
B:自动式
javac -d . HelloWorld.java
3. 导包
(1) 我们多次使用一个带包的类,非常的麻烦,这个时候,Java就提供了一个关键字import。
(2) 格式:
import 包名...类名;
另一种:import 包名...*;(不建议)
(3) package,import,class的顺序
package > import > class
4. 权限修饰符
(1) 权限修饰符
本类 | 同一个包下 | 不同包下的子类 | 不同包下的无关类 | |
private | Y | |||
默认 | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
(2) 这四种权限修饰符在任意时刻只能出现一种。
public class Demo {}
5. 常见的修饰符
(1) 分类:
权限修饰符:private,默认,protected,public
状态修饰符:static,final
抽象修饰符:abstract
(2) 常见的类及其组成的修饰
类:
默认,public,final,abstract
常用的:public
成员变量:
private,默认,protected,public,static,final
常用的:private
构造方法:
private,默认,protected,public
常用的:public
成员方法:
private,默认,protected,public,static,final,abstract
常用的:public
(3) 另外比较常见的:
public static final int X = 10;
public static void show() {}
public final void show() {}
public abstract void show();
6. 内部类
(1) 把类定义在另一个类的内部,该类就被称为内部类。
举例:把类B定义在类A中,类B就被称为内部类。
(2) 内部类的访问规则
A:可以直接访问外部类的成员,包括私有
B:外部类要想访问内部类成员,必须创建对象
(3) 内部类的分类
A:成员内部类
B:局部内部类
(4) 成员内部类
A:private 为了数据的安全性
B:static 为了访问的方便性
成员内部类不是静态的:
外部类名.内部类名 对象名 = new 外部类名.new 内部类名();
成员内部类是静态的:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
(5) 成员内部类的思考题
30,20,10
class Outer { public int num = 10; class Inner { public int num = 20; public viod show() { int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(Outer.this.num); } } }
(6) 局部内部类
A:局部内部类访问局部变量必须加final修饰。
B:为什么呢?
因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。
所以,堆内存还是用该变量,而改变量已经没有了。为了让该值还存在,就加final修饰。
通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。
(7) 匿名内部类
A:是局部内部类的简化形式
B:前提
存在一个类或者接口
C:格式:
new 类名或者接口名() {
重写方法;
}
D:本质:
其实是继承该类或者实现接口的子类匿名对象
(8) 匿名内部类在开发中的使用
我们在开发的时候,会看到抽象类,或者接口作为参数。
而这个时候,我们知道实际需要的是一个子类对象。
如果该方法仅仅调用一次,我们就可以使用匿名内部类的格式简化。
interface Person { public abstract void study(); } class PersonDemo { public void method(Person p) { p.study(); } } class PersonTest { public static void main(String[] args) { PersonDemo pd = new PersonDemo(); pd.method(new Person() { public void study() { System.out.println("好好学习,天天向上"); } }); } }
(9) 匿名内部类的思考题
interface Inter { void show(); } class Outer { //补齐代码 public static Inter method() { return new Inter() { public void show() { System.out.println("HelloWorld"); } }; } } class OuterDemo { public static void main(String[] args) { Outer.method().show(); //"HelloWorld" } }
7. Object类
(1) Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。
(2) Object类的构造方法有一个,并且是无参构造
这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造
(3) 要掌握的方法:
A:toString()
返回对象的字符串表示,默认是由类的全路径+'@'+哈希值的十六进制表示。
这个表示其实是没有意义的,一般子类都会重写该方法。
如何重写呢?过程我也讲解过了,基本上就是要求信息简单明了。
但是最终还是自动生成。
B:equals()
比较两个对象是否相同。默认情况下,比较的是地址值是否相同。
而比较地址值是没有意义的,所以,一般子类也会重写该方法。
重写过程,我也详细的讲解和分析了。
但是最终还是自动生成。
(4) 要了解的方法:
A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。
B:getClass() 返回对象的字节码文件对象,反射中我们会详细讲解
C:finalize() 用于垃圾回收,在不确定的时间
D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。
(5) 两个注意问题;
A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。
B:思考题
== 和 equals() 的区别?
A:==
基本类型:比较的是值是否相同
引用类型:比较的是地址值是否相同
B:equals()
由Object类提供的,可以由子类来进行重写。只能比较引用类型。默认情况下,比较的是地址值是否相同, 这个时候和 “==”是等价的。
但是,我们可以根据自己的需要重写该方法。Java中很多类(String类、Date类、File类等)都对equals方法进行了重写。
内容总结
以上是互联网集市为您收集整理的Java基础知识03全部内容,希望文章能够帮你解决Java基础知识03所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。