Java最为基础的一点小知识

Java最为基础的一点小知识


下面这些文字,是在查阅网上的一些文章后,自己做的小结


 Java的特点  

       平台无关性是Java语言最显著的特点,而这一特点是由Java的工作方式所决定的。Java编译器将人们可读的源程序代码转换成独立于处理器结构的字节代码(Byte Code)。只要有Java运行系统的机器都能执行这种中间代码。由机器相关的Java虚拟机实现执行。Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

      Java
源代码和编译后的字节代码均与机器无关的,但JVM是与机器相关的,装有不同操作系统的机器上,需要有专门为该操作系统开发的JVMJVM创造一个内部运行时系统(run time system)来执行Java字节代码,包括:加载“.class”文件,管理内存,执行垃圾收集。


Java字面量
        
        在Java中,字面量(literal)是指由文字所表示的取值, 换言之,字面量就是我们经常说的常量。其中需要注意的是,float的字面量默认的是double类型的,所以如果要第一个单精度的浮点数需要写为:float a=(float)0.2145;String类型的字面量和其他语言中的定义相同,但是需要注意的是String类型的字面量有一个专门的“字符串池”来保存,每次使用一个字符串的字面量,系统都会首先检查“字符串池”中是否已经存在该字面量,如果没有,则在“字符串池”中生成该字面量,如果存在则只需将该字面量的内存地址赋值给引用变量即可。

        String a=new String("hello");和String b="hello";有很大的差别,前者是直接在开辟一个内存空间,其中保存的数据为字符串hello,同时申请一个引用变量a,将为字符串开辟的内存地址赋值给a;而对于后者,后台的操作是:首先查看“字符串池”中是否存在hello这个字面量,如果存在,则将该字面量的内存地址赋值给b,如果没有,则在“字符串池”中生成一个hello字面量,将新生成的字面量的内存地址赋值给b。另外,前者是在程序运行时,在内存开的空间,而后者是在程序编译时就为之开了内存空间。

对象的比较

      运算符 “==”是用来比较对象的引用值是否相等,换句话说,就是两个引用是否指向同一个对象。通俗点讲,就是运算符“==”是专门用来比较变量的值是否相等。对象变量其实是一个引用,他们的值指向对象所在的内存地址,而不是对象本身。“==”并不涉及到对象内容的比较。equals的原始代码是:

boolean equals(object o)

{ return this==o;}

所以用户如果要想在自己的类中实现对象内容的比较,则需要重写equals()方法。另:String类已经重写了equals方法。

你可能感兴趣的:(Java最为基础的一点小知识)