目录
计算机体系
计算机的组成
CPU的工作原理
Java中的语句
Java中,能出现语句的位置有哪些
语句何时被执行
语句的执行触发大体有三种
类的加载、对象的实例化、方法的调用
什么时候进行类的加载
什么情况下类被用到
类加载时语句的执行顺序
对象实例化
和对象实例化有关的语句
Java中的数据
直接接触到的数据
内存中的数据被抽象成Java语句中的哪些概念
数据在内存中的位置
变量的存储
数据有哪些
Java中的语法
类的职责
赋值语句
几个重要关键字的作用
面向对象编程
面向对象的三大特征
方法的重写
计算机体系
计算机的组成
CPU的工作原理
从哪里读
1、按顺序度,一条一条读取 ——> 顺序执行语句
2、按照指定地址,读取 ——> 分支执行语句、循环执行语句
程序 = 语句 + 数据(粗略)
Java中的语句
Java中,能出现语句的位置有哪些
1、方法的内部(不区分哪种方法,除了抽象方法)
2、类的内部,作为属性定义时,赋值语句也可以出现
class A {
int a = hello();
}
定义属性 a 时,执行 hello 方法(语句)
3、各种各样的代码块
构造代码块、静态代码块
4、出现在构造方法中
注:像 import java.util.Scanner 的这种导入包的操作不是语句
语句何时被执行
方法中的语句,一定是被调用时,才会执行
1、静态方法,光有类,就可以开始调用了
2、普通方法,必须先通过类实例化出对象,才能通过对象去调用
3、唯一的特殊方法时 main 方法,是被JVM调用的,我们看不到调用位置
语句的执行触发大体有三种
1、某个类被加载时,会触发一批语句的执行
2、某个类实例化对象时,会触发一批对象的执行
3、某个类的方法被调用时,会触发一批语句的执行
类的加载、对象的实例化、方法的调用
什么时候进行类的加载
类被用到并且类还没有被加载过
注:类的加载往往只执行一次
什么情况下类被用到
1、用到了类中的静态属性或者类里的静态方法时
2、要用该类实例化对象时
3、用到子类,会触发用到父类(包含接口)
类加载时语句的执行顺序
静态属性定义时的赋值语句、静态代码块中的语句。执行顺序按照书写顺序依次执行
父类的所有语句执行完,才能执行子类的语句
对象实例化
对象的实例化可能会触发类的加载,当类已经加载过后,对象的实例化就不会触发类的加载
类的加载完成后,可能紧跟着对象的实例化
和对象实例化有关的语句
1、属性定义时的赋值语句
2、构造代码块中的语句
3、构造方法中的语句
执行顺序:
属性定义和构造带吗,按照书写顺序执行,之后才执行构造方法中的语句
子类实例化时,必须要求父类的所有实例化相关语句全部完成后,才开始执行子类的
Java中的数据
直接接触到的数据
1、基本类型
byte、short、int、long
char
float、double
boolean
2、引用类型
class 类型
接口类型
数组类型
3、字面量
内存中的数据被抽象成Java语句中的哪些概念
1、变量
2、数组中的元素
3、对象
数据在内存中的位置
JVM中,针对一个Java进程,分为栈区、堆区、方法区
对象在堆区上
引用的区域不确定,需要有其他条件来明确
类存在于方法区
局部变量:存在于该方法执行时,创建的栈帧中,总的里说是栈区
对象的属性:存在于属性附着的对象上,总的来说是堆区
类的静态属性:存在于静态属性附着的类上,总的来说是方法区
数组的元素存在于元素附着的数组对象上,所以存在于堆区
方法的某次执行时需要的数据,以栈帧的形式,放置在栈区
变量的存储
1、基本类型
byte、short、int、long 1、2、4、8字节,按照指定规则,把数字保存起来
float、double 4、8字节,以浮点数保存(有精度损失)
char 2字节,以UTF-16方式保存,保存的Unicode编码
boolean 无固定
2、引用类型是什么
引用类型不像基本类型,保存的数据是无法直接使用的,而是间接使用的
引用类型可以存对象地址,但不要求必须存对象的地址
引用中存的是找到对象的 “ 线索 ” ,逻辑上,引用是指向对象的
数据有哪些
程序员可以直接接触到的:变量、字面量、数组元素
程序员无法直接接触到的,但是使用非常频繁的
1、对象(属性)
2、类(静态属性、类相关的方法、父类信息)
Java中的语法
Java代码,是以类为基本单元进行组织的
包的声明:package ... ;
类的导入:import ...;
类的定义:一个Java文件中最多只能有一个public类,类名和文件名相同
类的职责
1、作为静态属性、静态方法的存在位置
2、作为构造对象的模板(属性、构造方法、方法)
3、作为被继承的模板(属性、构造方法、方法)
4、抽象类和接口是其的特殊化
赋值语句
赋值语句等号的左边是一个内存空间(变量、数组元素),等号的右边只要是个值就行
1、显式赋值
a = ...;
a[0] = ...;
2、隐式赋值
方法的调用,隐含着,形参 = 实参的赋值 add(1,2) add(int a,int b){...}
a = 1;b = 2;
方法的返回,隐含着,返回值 = return 的值
int add(...){... return 1;} 隐含着int returnValue = 1;
方法调用后赋值, int c = add(1,2); c = ...;
3、赋值的基本要求
等号两边的类型完全一致或者等号两边的类型,具备转换的可能性
1)可以直接转换的
int -> long、float -> double、long -> double 逻辑上小范围赋值给大范围
String -> Object、int[] -> Object
2)不能直接转换,但是可以强制转换的
逻辑上大范围赋值给小范围
float -> int、double -> float、Object -> String、Object -> int[]
几个重要关键字的作用
static
1、静态导入
2、全部出现在类的内部,方法的外部;与该类的对象解绑,只和类有关系
静态属性、静态方法、静态代码块、静态内部类
final
1、修饰变量
变量的值只能赋值一次,之后不可改变
2、修饰类
变为最终类,只可实例化对象,不能被继承
3、修饰方法
abstract
1、修饰类
变为抽象类,只可被继承,不能实例化对象
2、修饰方法
this
在构造方法中调用自己的其他构造方法;访问自己的属性、方法
super
在构造方法中,调用父类的构造方法;方法 “ 父类 ” 的属性、方法
面向对象编程
为了程序员考虑的一种编程思想,帮助我们更好的划分出类的职责
表现为,把现实世界中的一类事物抽象成一组相关的数据,以及数据管理的一组方法
面向对象的三大特征
1、封装
哪些职责归哪些对象管,尽可能不公开相关数据(工具:访问限定符、方法)
2、多态
作为服务的使用(以方法的形式提供,不需要知道,方法是具体对象实现的),表现为多种形态
3、继承
类继承(extends)某个类 单继承
接口继承(extends)某些接口 多继承
类实现(implements)某些接口 多实现
方法的重写
粗略的要求:返回值类型、方法名称、方法的形参完全一致