java语言核心技术

1、引用操作对象

2、存储

1)寄存器

2)堆栈:必须知道数据的生命周期

3)堆:不必知道生命周期

4)常量存储

5)非RAM存储:流对象和持久化对象

3、基本数据类型(存储在堆栈)

char、byte、short、int、float、long

4、高精度数字

BigInteger、BigDecimal

5、作用域

基本类型和引用类型的变量在作用域范围之外不能使用(原因:存于堆栈中);

对象是可以存活在作用域之外(原因:存于堆中)

6、静态导入

import static java.lang.System.*;

7、赋值

可将常数赋给一个变量,单不能将任意数赋给常数

基本数据类型赋值:存储的是实际的数值

对象赋值:操作的是对象的引用,注意别名现象引起的方法调用问题

8、一元加、减符号

-:转变数据的符号

+:将较小的类型的操作数提升为int

9、方法重载

构造器是强制重载方法的重要原因之一

区分重在方法:以返回值区分重载方法行不通

涉及基本类型的重载

10、类方法就一份,创建多个该类的对象时,方法如何知道被哪个对象调用呢?

编译器暗自把“所操作对象的引用”作为第一个参数传递给方法

11、在构造器中调用构造器

用this,但是只能用一次,并且必须在第一行

12、清理:终结处理和垃圾回收

对象可能不被垃圾回收:虚拟机若不是面临内存耗尽的情形,是不会浪费时间去执行垃圾回收的、

垃圾回收并不等于析构

垃圾回收只与内存有关

13、触发类加载前提:静态方法和静态变量被调用或修改

构造器是静态方法

14、子类可以继承父类的静态方法,但是不能重写父类的静态方法,只能隐藏父类的静态方法,调用子类还是父类的方法

       取决于引用的类型是子类还是父类。

       子类可以继承并重写父类的非静态方法

15、对于final类型成员变量一般有两种赋初始值的方式:

 1)在声明final类型的成员变量时就赋上初始值

 2)在声明final类型成员变量时不赋初值,但在类的所有构造方法中都为其赋上初始值

 

16、static代码块:静态代码块的作用是完成一些初始化工作,首先执行静态代码块,然后执行构造方法,静态代码块在类被加载时候执行,而构造方法是在生成对象的时候执行,要想调用某个类来生成对象,首先需要将类加载到jvm,然后由jvm加载这个类来生成对象

17、类的静态代码块只会执行一次,是在类被加载的时候执行,因为每个类只会被加载一次,所以静态代码块也只会执行一次,而构造方法不然,每次生成对象的时候都会调用类的构造方法。

18、如果继承体系中既有构造方法又有静态代码块,那么首先执行最顶层类的静态代码块,直到最底层类的静态代码块,然后再去执行最顶层类的构造方法,一直执行到最底层类的构造方法

19、不能在一个静态方法中访问非静态成员变量,但是可以在非静态方法中访问静态成员变量

20、多态就是父类型或接口类型引用可以指向子类型的对象

21、类型转换:向上转型、向下转型(必须显示指定)

22、抽象类:无法实例化

23、抽象方法:抽象方法必须在抽象类中

24、接口中的所有方法都是抽象方法,可以看成是特殊类型的抽象类,一个类有且只能有一个父类,一个类可以实现多个接口

25、一个类不能既是final又是abstract,因为abstract的目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,这样两者互相矛盾。

26、编译带有package声明的java源文件的两种方式:

a)直接编译,然后根据类中所定义的包名,逐一手工建立目录,将生成的class文件放到该目录结构中

b)使用编译参数-d,方式为javac -d . 源文件.java,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构。

27、访问控制符:被protected所修饰的属性和方法可以在类内部、相同包以及该类的子类所继承。

28、应用编程接口(API)

29、关于进制的表示:16进制,逢16进1,16进制的数字包括:0-9,A、B、C、D、E、F

       16进制相互转换十进制;计算机中的地址表示一般都用十六进制来表示。

30、equal方法

对于Object类的equal方法来说,它是判断调用equal方法的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。

对于String类的equal方法来说,它是判断当前字符串与传进来的字符串的内容是否一致

31、String Pool字符串池

String a = "aaa",首先查找String Pool中是否存在“aaa”这个对象,若不存在,创建一个,然后将这个对象的地址返回来,赋给引用a

String a =new String("aaa");首先在string pool中查找有没有"aaa"这个字符串对象,如果有,则不在string pool中再去创建"aaa"这个对象,直接在堆中创建一个"aaa"字符串对象,然后将堆中的这个对象地址返回赋给a。

如果没有,则首先在string pool中创建一个"aaa"对象,然后再在堆中创建一个“aaa“对象,然后将堆中这个"aaa"对象的地址返回来,赋给a引用。

32、jdk5中新增的语法特性包括,泛型、增强的for循环、基本类型的自动装箱和拆箱机制、枚举类型、参数长度可变、静态引入和注解等

33、jdk7中新增的语法特性包括,switch语句 、整数字面量、异常处理、泛型、资源处理、参数长度可变方法的调用等

34、switch增加了对字符串判断的支持,但其仅仅是在编译器层面上,而在jvm和字节码层面上,还仅仅支持与整数类型兼容的类型。在编译过程中,编译器会根据源代码的含义进行转换,将字符串类型转成与整数类型兼容的格式,不同编译器可能会采用不同的方式来完成转换。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值