<你必须知道的261个Java语言问题>1、2章读书笔记

Java平台与Java语言的关系:Java平台包括:核心Java API(包、框架、类库),Java字节码(编译且可执行的形式),Java虚拟机(JVM,执行字节码的运行机制)。

Groovy、JRuby、JPython也可以编写出运行在JVM上执行的字节码。Android使用的是Dalvik虚拟机,执行Dalvik字节码

 

Java的运行机制:先编译成系统无关的字节码,再在JVM中解释执行。

 

JVM工作步骤:创建JVM装载环境与配置,装载jvm.dll,初始化jvm.dll,调用JNIEnv实例装载并处理Class类,运行Java程序。

 

JRE:Java Runtime Environment。JRE自带的基础类库在JRE/lib/rt.jar中。包括SE版所有类库

 

JDK:Java Development Kit。其中的常用工具包括:javac.exe,jar.exe,javadoc.exe,jdb.exe,java.exe,appletviewer.exe,javah.exe,javap.exe,jconsole.exe

 

JDK>JRE>JVM

 

 

GC Garbage Collection。 GC实现无严格规定,通常采用有向图方式记录、管理堆中所有对象,当对象不可达时,GC有责任回收这些内存空间。为了GC更高效,注意尽早将不引用的对象赋为null。finalize会加大GC的工作量,尽量少用,System.gc()用于通知GC运行,但并不保证一定会运行。

 

JAVA安装后有jdk与jre(jre1)两个文件夹,其中jdk下又有一个jre(jre2)文件夹。其中jre2是用来为JDK中Java编写的开发工具提供运行环境的。

 

final关键字:不可继承、不可覆盖、不可修改(简单类型不可修改值,引用类型不可修改引用)

 

instanceof关键字:a instanceof someClass在a为someClass类的对象或其子类对象时返回true,否则返回false

 

float f = 3.4是不正确的,因为小数默认为double类型。必须float f = 3.4f或float f = (float)3.4

 

成员变量与局部变量:

1.       局部变量必须显式初始化,而成员变量可默认初始化(除仅被final而不被static修饰时)

2.       成员变量存储在堆中,局部变量存储在栈中。

 

简单变量与引用变量:

1.  简单变量存在本中,引用变量分为引用空间和存储空间两部分,引用空间在栈中,存放存储空间的首地址,存储空间在堆中。

2.  引用变量相互赋值时传递的是地址。

 

x+=y与x=x+y的区别:+=包含了自动的强制类型转换。

 

x?y:z表达式中,y和z应当是相同的数据类型。(如果采用类似someMethod(x?y:z)判断执行某方法的参数而y与z类型不同,即使someMethod拥有对两种类型不同的重载,该代码也无法执行的。必须someMethod存在对y与z共同超类的重载才可以)。

 

String的+运算符是如何实现重载的?(使用的是StringBuilder的append()方法)

 

String s = new String(“abc”)和String s = “abc”的区别

如果String s1 = new String(“abc”); String s2 = new String(“abc”);String s3 = “abc”; String s4 = “abc”;

s1==s2为false,s3==s4为true。

s3、s4的赋值,采用的是Java为字符串提供缓冲池机制,去缓冲池查找相应字符串,否则创建一个新的字符串放在缓冲池中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值