今天是学习java的第六天,今天学习了面向对象,脑子已经不够用了。
学习的进度慢了,碰到的问题也多了。还是先总结一下一天学习的知识点。
1.了解了什么是面向对象,什么是面向过程,我学习的java语言就是面向对象的语言
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为
2.对象是什么?
万物皆可对象,对象就是具体的事物
(1) 什么是类?什么是抽象?
类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。; 抽象就是抽出某些事物相似的部分
(2) 说说类和对象的关系,举两个例子描述类和对象
类是对对象的抽象;例如, 人类是一个类,黄种人,白种人就是对象;
树是一个类,松树,梧桐树就是对象
(3) 类里面通常都有哪些东西?
属性field、方法method、构造器constructor
3.内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程
(1) JVM内存分为哪三个区域?方法区也在堆中,这句话对么?
栈stack、堆heap、方法区method area 对
(2) 栈里面存储什么数据?栈的特点是什么?
1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
3. 栈属于线程私有,不能实现线程间的共享!
4. 栈的存储特性是“先进后出,后进先出”
5. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!
(3) 堆里面存储什么数据?堆的特点是什么?
1. 堆用于存储创建好的对象和数组(数组也是对象)
2. JVM只有一个堆,被所有线程共享
3. 堆是一个不连续的内存空间,分配灵活,速度慢!
(4) 方法区里存储什么数据?方法区的特点是什么?
1. JVM只有一个方法区,被所有线程共享!
2. 方法区实际也是堆,只是用于存储类、常量相关的信息!
3. 用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)
内存分析:
4.this 的本质 对象创建的过程
创建一个对象分为如下四步:
1.分配对象空间,并将对象成员变量初始化为0或空;
2.执行属性值的显示初始化;
3.执行构造方法;
4.返回对象的地址给相关的变量
(1) this指向哪里?同类中,一个构造器如何调用另外一个构造器?
this 总是指向调用该方法的对象
使用this关键字调用重载的构造方法,避免相同的初始化代码,但只能在构造方法中用,并且必须位于构造方法的第一句。
1. Static关键字_内存分析静态变量和静态方法
(1) Static修饰变量称之为什么?static修饰方法称之为什么?
用static修饰变量为静态成员变量,也称为类变量
用static修饰方法为静态方法。
(2) 被static修饰的变量和方法从属于谁?没被static修饰的变量和方法从属于谁?
static修饰的成员变量和方法,从属于类
普通变量和方法从属于对象的
1. 静态初始化块_继承数的追溯
(1) 静态初始化块的作用是什么?什么时候执行静态初始化块?
静态初始化块,用于类的初始化操作
先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止。
1. Java的参数传值机制_值传递
(1) 写代码解释为什么说java中参数传递是值传递
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。 也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。
(2) 基本数据类型传递和引用数据传递一样么?
不一样 基本数据类型传递的是值的副本。但是引用类型指的是“对象的地址”
1. Java包机制_package的使用_jdk提供的常见包的作用
(1) Java中Package的作用是什么?
通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。 包对于类,相当于文件夹对于文件的作用。
(2) Jdk有哪些常见包,分别什么作用?
Java中的常用包
说明
java.lang
包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt
包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
包含执行与网络相关的操作的类。
包含能提供多种输入/输出功能的类。
java.util
包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。