Java类和对象的关系原理图

简介: Java类和对象的关系原理图

N.1 类和对象的概念

1)对象是具体的一个实体,对象有两个特征:属性(多个变量)和行为(多个方法)。

2)类是创建对象的模板(类事先定义了成员变量和成语方法,让创建对象时,照着这个模板去实行)。

3)对象的属性中包含各种变量(每个变量代表不同信息)并通行为来更改自己的信息。

4)通过一个类可以创建多个对象。

N.1.1 class加载过程

1)先加载父类静态变量(包括“静态代码块”static{ },加载会执行。但静态方法不会执行,static void name(){} 只能被mian方法调用)后执行子类。

2)非静态变量和方法,随着对象的存在而存在随着的对象的消亡而消亡。

(1)比如在main方法外面创建对象,不用static修饰,这个对象是不会被加载的,也就是没有创建成功。

N.1.2 jvm运行过程

1)执行main方法,其它的方法使用就看main的方法体有没有进行调用。

不可以在main方法的外面调用方法,只能在main的方法体里面进行调用。

2)在main方法内外创建同一个对象是允许的,可以把它们认为是基本类型,只是作用域不同。

3)全局作用域可以在如何地方被修改,如果存在相同名的全局变量和域局部变量,就使用的是最近的变量,它们两个互不相干。

N.1.3 类和对象使用

1)在类可以定义成员变量和成语方法,静态方法只能访问静态变量(访问也可以省略 ‘类名点’的调用)

2)对象可以使用成员的所有方法和变量(包括静态的)(但一般最好不要用类使用的静态变量和静态方法) . 非静态方法能访问非静态变量和静态变量(建议少用)(访问也可以省略 ‘对象点’的调用)

3)加载是静态方法不会执行,但是静态代码块会执行

4)静态变量必须是全局的静待变量,不能是局部静待变量

public class T {

int i = 0;//属性

T a = new T();//属性

void m() {

System.out.println();

}

public static void main(String[] args) {

//主要用new会创建对象,就会先加载该对象的属性。上面有两个属性,会进行加载,但注意:一Enew,就会在一次加载所有属性。所以在上面的一个属性中,由于加载的过程中,又new了,所以又要加载,反反复复,导致stackoverflowError内存出

T t1 = new T();//创建对象完后,加载过程出错。

t1.m();//上面语句出错,所以这里不会执行了。

}

}

public class T {

int i=1;//属性

static T q=new T();//属性

void q2(){

System. out. println("测试");

}

public static void main(String [] args){

//首先执行main方法,由于下面创健了对象,所以会加载对象的属性,但由于上面的一个属性被static修饰,所以只能是加载一次,加载类的时候加载。其实也不属于对象的属性,是属于类的。但如果不用static修饰,就会成为对象的属性。而属性加载的过程中,又一次new.导致有加载,所以死循环,内存溢出。

T q1=new T();

q1.q2();

}

}

public class A {

int i=0; //属性

static A a=new A(); //属性

void t(){

System. out. println("a");

}

public static void main(String[] args) {

// 比如在这里上面语句 static Aa=new A();相当于类的属性类加载的是时候会加载,加载的过程,这个属性有new的操作过程所以又会加载这个对象的其它的非静态属性。但注意,类的属性和方法都是静态的,有类访问,而对象的属性和方法都是非静态的,有对象访问,但有一点主意:对象可以访问类的数据,而类却不可以分为对象的数据

a.t();

System. out. println( a. i);

}

}

相关文章
|
18天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
39 8
|
1月前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
18天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
35 1
|
1月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
51 17
|
27天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
2月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
50 17
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
89 4
|
1月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
50 2
|
1月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
43 4
|
1月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
40 5