JavaSEE总复习

1.计算机体系

1.输入设备: System.in:终端设备、控制台设备(键盘),File:文件(硬盘);
2.输出设备:system.out、System.err:终端、控制台(屏幕)File:硬盘
3.cpu;
4.内存;
学习的重点为CPU和内存

2. CPU的工作原理

1.从内存中读取指令数据
按照读取方式可分为:

  1. 按站顺序,一条一条读取——顺序执行语句
  2. 按指定地址读取——分支执行语句和循环执行语句

2.执行指令数据:处理各种各样的数据(暂时不考虑指令数据)
可以粗略的理解为:程序=语句+数据

3.语句角度

3.1在JAVA中,语句出现的位置

  • 方法的内部(不区分什么方法、除了抽象方法),具体为:静态方法、普通方法、final方法、非final方法;
  • 类的内部,作为属性定义时,赋值语句也可以出现
class A{
int a=hello();//定义a属性时,执行hello方法(语句)
}
  • 各种各样的代码块
    构造代码块、静态代码块
class A{
{hello();}
}
class A{
static{hello();}
}
  • 出现在构造方法中
class A{
A(){hello();}
}

还有内部类、匿名内、lambda表达式,暂时不用考虑。
2.语句的执行(语句并不是写了就会被执行)

  • 方法中的语句,时方法被调用时,才会被执行,无论是什么方法。
  • 语句的执行触发实际大体有三种:
    1.某个类被加载时,会触发一批语句的执行;
    2.某个类实例化对象时,会触发一批语句的执行;
    3.某个类的方法,被调用时,会触发一批语句的执行。
    3.2类的加载、对象的实例化、方法的调用
  • 类的加载:当类被用到时并且类还没被加载时会触发类的加载。
    类被用到:1用到了类中的静态属性或者调用了类里的静态方法时
    2.要用该类实例化一个对象时
    3.用到子类,会触发用到父类(包含接口)
    执行顺序:
    静态属性定义时里的赋值语句、静态代码块中的语句。执行顺序,按照书写顺序,依次执行;
    父类的所有加载语句执行完,才能执行子类的加载语句。
  • 对象的实例化:
    1.对象的实例化可能会触发类的加载。反之,对象的实例化,可能不触发类的加载(类已经加载过了)
    类的加载完成之后,可能紧跟着对象的实例化。反之,类的加载完成之后,可能不会对象的实例化(访问类的静态属性、调用类的静态方法时触发的类的加载)
    2.和对象实例化有关的语句:
    (1)属性定义时的赋值语句
    (2)构造代码块中的语句
    (3)构造方法中的语句
  • 执行顺序:
    (1) 属性定义和构造代码,按照书写顺序执行
    (2)第一条完成之后,才执行构造方法中的语句
    (3)子类的实例化时, 必须要求父类的所有实例化相关语句全部完成之后,才开始执行子类的
  • 方法的调用:
    方法中的语句,一定是被调用时,才能执行
    1.静态方法,光有类,就可以开始调用了
    2.普通方法,必须先通过类,实例化出对象出来(并不要求紧挨着)。才能通过对象去调用
    3.唯一的特殊方法是main方法,是被JVM调用的。我们看不到调用的位置

4.数据角度

4.1直接接触到的数据(以变量、字面量、数组元素来体现)

  • 基本类型(primitive type):byte、short、int、long、char、float、double(数值类型),boolean;
  • 引用类型(referencetype):1.class类型;2接口类型;3.数组类型;
    1.字面量(literal)
    2.引用类型:null、“xxx”;
    3.基本类型:1、1L、1.0、1.0F、‘c’、true、false;
    4.数组元素类型:
    (1) 类型[] 类型就是数组元素
    byte[]、short[]、 int[]、 long[]、char[]、 float[]、 double[]
    boolean[]
    (2)引用类型作为数组元素
    String[] Scanner[]
    Comparable[] Comparator[]
    (3)数组本身作为数组元素类型
    int[][]
    int[][][]
    int[][][][]

    4.2数据在内存中的位置
  • 在内中的数据,被抽象抽象为JAVA语句中的:变量、数组中的元素、对象;
  • JVM中,针对一个JAVA进程,内存主要分为:栈区、堆区、方法区;
    1.对象:对象在堆区上;
    2.引用:不确定,需要其他条件明确;
    3.变量:根据变量的种类来明确变量在什么区域;
    变量有几种种类:三种, 分别是局部变量(方法定义的变量、方法的形参、catch ()定义的变量)
    4.对象的属性:存在于属性附着的对象上,对象存在于堆区。总的来说是栈区。
    5.类的静态属性:存在于静态属性附着的类上,类存在于方法区。总的来说是方法区。
    6.光看数据的类型(引用类型or基本类型)不决定变量存在于何处。
    7.数组的元素存在于元素附着的对数组对象.上,所以也是存在于堆区。
  • 方法的某次执行时需要的数据,以栈帧的形式,放置在栈区。
    对象,逻辑上放置在堆区。
    类的数据,逻辑上放置在方法区。
    语句数据(指令数据、字节码数据、方法)放置在内存的位置:是随着类,放置在方法区。无论是静态方法,还是普通方法!

4.2程序员无法直接接触到的,但是使用非常频繁的
1.对象(属性)
2.类(静态属性、类相关的方法、父类信息)
只能通过引用去操作!
4.3数据存在何处
存在何处,是由其变量的种类决定的,和数据的类型无关。
对引用和对象的理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值