Java基础(3)
来源:互联网 发布:ps for mac破解版下载 编辑:程序博客网 时间:2024/06/05 20:41
(1)是所有类的根类,超类。
java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
(2)Object类中的方法
A:void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
B:Class getClass()
获取对象的字节码文件的描述类,后面再讲反射的时候还会在说这个类。
String name = s.getClass().getName();
C:int hashCode()
获取对象的哈希值。其实就是对象的内存地址值十进制表示
D:String toString()
返回对象的字符串表示。
表示格式:
getClass().getName()+"@"+Integer.toHexString(hashCode());
package关键字
(1)包:其实就是文件夹。用于区分不同包下相同的类名。
(2)好处:
A:对类文件进行分类管理。
B:给类提供了多层命名空间
aaa.Demo
bbb.Demo
C:写在程序文件的第一行。
D:包也是一种封装形式。
import关键字
(1)导入包的关键字
(2)格式:
import 包名;
(3)注意:
A:一个程序文件中只有一个package,可以有多个import。
B:用来导包中的类,不导入包中的包。
C:通常写import mypack.Demo,明确自己使用的类。
(4)关键字的顺序
类,包,导包这些关键的顺序。
包 -- > 到包 -- > 类
不同修饰符可以修饰哪些内容
本类中 同一个包中 不同包中的子类中 不同包中
private OK
默认 OKOk
protected OK Ok OK
public OK Ok OK Ok
类 构造方法成员变量 成员方法
private OK OK OK
默认 OkOk Ok OK
protected OK OK Ok
public OkOk OK OK
static OK Ok
final OkOK OK
abstract Ok OK
一般格式:
成员变量:
权限修饰符+static/final+数据类型+成员变量名
public static final int NUM = 10;
成员方法:
权限修饰符+static/final/abstract+返回类型+方法名
一般我们输出对象名的时候,其实底层调用的就是该对象的toString()方法。
这种返回没有意义,所以,我们会重写这个方法,显示类的成员变量信息。
E:boolean equals(Object obj)
用于比较两个对象的地址值是否相同。
我们获取对象后,比较它的地址值意义不大。所以也会对这个方法进行重写。
重写要完成什么功能,是根据需求定的。
(3)==和equals的用法:
A:==怎么用?
**可以用于比较基本数据类型,比较的就是基本数据类型的值是否相等。
**可以用于比较引用数据类型,比较的是对象的地址值是否相等。
B:equals怎么用?
equals只能用于比较引用数据类型的。
**Object提供的equals是用于比较对象地址值是否相同。
**自定义类中,如果重写了equals方法,那么就是按照你自己的需求来比较的。
static关键字:(修饰成员变量时,可以实现数据共享)
用于修饰成员(成员变量和成员函数)被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
使用注意
静态方法只能访问静态成员
静态方法中不可以写this,super关键字
主函数是静态的
static特点:
- 1,static是一个修饰符,用于修饰成员。
- 2,static修饰的成员被所有的对象所共享。
- 3,static优先于对象存在,因为static的成员随着类的加载就已经存在了。
- 4,static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。
- 5,static修饰的数据是共享数据,对象中的存储的是特有数据。
- 成员变量和静态变量的区别?
- 1,两个变量的生命周期不同。
- 成员变量随着对象的创建而存在,随着对象的被回收而释放。
- 静态变量随着类的加载而存在,随着类的消失而消失。
- 2,调用方式不同。
- 成员变量只能被对象调用。
- 静态变量可以被对象调用,还可以被类名调用。
- 3,别名不同。
- 成员变量也称为实例变量。
- 静态变量称为类变量。
- 4,数据存储位置不同。
- 成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
- 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.
staitc什么时候使用?
- 1,静态变量。
- 当分析对象中所具备的成员变量的值都是相同的 。
- 这时这个成员就可以被静态修饰。
- 只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。
- 如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中,定义成静态的。
- 2,静态函数。
- 函数是否用静态修饰,就参考一点,就是该函数功能是否有访问到对象中的特有数据。
- 简单点说,从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。
- 如果不需要,就可以将该功能定义成静态的。当然,也可以定义成非静态,
- 但是非静态需要被对象调用,而仅创建对象调用非静态的
- 没有访问特有数据的方法,该对象的创建是没有意义。
理解main方法:
class MainApp{public static void main(String[] args) {for(int i=0;i<args.length;i++){System.out.println(args[i]);}}}
代码块:
普通代码块:
<span style="white-space:pre"></span>public class codeDemo{public static void main(String args[]){//定义一个普通代码块int x = 30; //定义局部变量System.out.println("普通代码块");}int x = 100;//与局部变量名称相同System.out.println("代码块之外--"+ x);}
构造代码块:构造代码块先于构造方法执行:
Demo{ <span style="white-space:pre"></span>{ //定义构造代码块 <span style="white-space:pre"></span> System.out.println("1构造代码款"); <span style="white-space:pre"></span>} <span style="white-space:pre"></span>public Demo(){ //定义构造方法 <span style="white-space:pre"></span> System.out.println("2构造方法"); <span style="white-space:pre"></span>} } public class CodeDemo2{ <span style="white-space:pre"></span> public static void main(String args[]){ <span style="white-space:pre"></span> new Demo(); //实例化对象 <span style="white-space:pre"></span> new Demo(); //实例化对象 <span style="white-space:pre"></span> new Demo(); //实例化对象 <span style="white-space:pre"></span>} }
static代码块:(静态代码块先于主方法执行,在类中静态代码块先于构造代码块执行,代码块又先于构造方法执行)
public class StaticDemo1{static{System.out.println("main代码块");}public static void main(String[] args) {new Person();}}class Person{{System.out.println("代码块");}static{System.out.println("static代码块");}public Person(){System.out.println("构造方法!");}}
- java基础3
- java基础(3)
- Java基础3
- java基础笔记3
- java基础3
- java基础复习--3
- java基础--连载3
- java基础3
- java基础面试3
- Java基础面试-3
- java基础3
- java 基础命令3
- java基础--笔记3
- java 基础3 类
- JAVA基础3
- java基础3
- Java基础(3)
- Java基础回顾(3)
- iphone sdk版本宏
- 第八周项目1:数组做数据成员(1)
- HDU2084 DP + 水 /入门+ 递推 + 从后往前思考问题的方式
- 安卓012Activity生命周期
- Hibernate-Session使用的背后
- Java基础(3)
- [LintCode] 中序遍历和后序遍历树构造二叉树 Construct Binary Tree from Inorder and Postorder Traversal
- Cuda学习笔记(四)——在vs2010中配置.cpp和.cu文件
- spring配置文件详解--真的蛮详细
- 一张正则表达式的图,mark一下
- php连接mysql数据库
- java中作用域的问题
- Android问题之this与Activity.this的区别
- 最小生成树--Kruskal算法