负责解释执行字节码文件的是Java虚拟机,JVM(Java Virtual Machine)。
Oracle为 JavaSE提供了JDK,为Java EE提供了 Java EE SDK(Software Development Kit)两个开发包。
用于编译Java程序所使用的javac.exe命令就是使用Java编写的,这个类就是 tools.jar中的 sun\tools\javac\Main.class。bin路径下的javac.exe命令实际上就是包装了这个Java类。bin路径下的绝大部分命令都是包装了tools.jar文件里的工具类。
Java程序源文件名必须与该文件中public类的类名相同。因此,一个Java源文件只能定义一个public类。但是可以拥有多个类定义。
Java程序的内存分配和回收都是由JRE在后台自动进行的。JRE会提供一个后台线程来进行检测和控制,一般都是在CPU空闲或内存不足时自动进行垃圾回收。
Java的堆内存是一个运行时数据区,用以保存类的实例对象,存储正在运行的应用程序所建立的所有对象。这些对象由垃圾回收来负责回收。所有JVM实现都有一个垃圾回收器管理的堆内存。它自动释放不再被程序引用的对象。
Java 8删除了HotSpot JVM中的 永生代内存 (PermGen)。改为使用本地内存在存储类的元数据信息,称为:元空间(Metaspace)
@author:指定Java程序的作者
@version:源文件版本
@deprecated:不推荐使用的方法
@param:方法参数说明
@return:方法返回值说明
@see:“参见”,指定交叉参考的内容
@exception:抛出异常的类型
@throws:抛出的异常
boolean,byte,short,int,long,char,float,double
char 代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型
null只能赋值给引用类型,不能赋值给基本数据类型
计算机以补码的形式存储二进制数值, 补码 减一 取反就得到原码
值必须使用''括起来,Java使用16位的Unicode字符集作为编码方式
计算机底层保存字符时,实际是保存该字符对应的编号,char类型的值可以直接作为整数型值来使用,相当于一个16为的无符号整数
char类型的变量,值完全可以参与加减乘除等数据运算,也可以比较大小。
System.out.println(a + 0);//65
System.out.println((char) (a + 32));// a
System.out.println(b); //B
当程序第一次使用字符串的直接量时,Java会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池(constant pool)中的字符串直接量。
String类是一个不可变类,String对象创建出来就不可能被改变,因此无需担心共享String对象出现问题。
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据,包括类,方法,接口中的常量,也包括字符串直接量。
Java会确保每个字符串常量只有一个,不会产生多个副本。
数组也是一种类型(引用类型),Java的数组要求所有的数组元素具有相同的数据类型。
一旦数组的初始化完成,它所占用的空间将被固定下来,因此数组的长度将不可改变。
一旦数组初始化,只要为数组元素分配了内存空间,数组元素就具有了初始值。
实际数组对象被存储在堆(heap)内存中,如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈(Stack)内存中。
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。因此,所有在方法中定义的局部变量都是放在栈内存中;在程序中定义的对象都是放在堆内存中的,堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。
从数组底层运行机制上看。数组变量其实是一个引用,这个引用指向真实的数组内存。二维数组,实际上就是一维数组,数组中的每个值又是一个一维数组。
int binarySearch(T[] a,T key):使用二分法查询key元素值在a数组中的索引,数组必须按升序排序
T[] copyOf(T[] original,int length):将original数组复制成一个新数组,length是新数组的长度。
boolean equals(T[] a,T[] b):如果数组a和b长度相等,且数组中的元素也一一相同,方法就返回true。
sort(T[] a):对a数组的数组元素进行排序
String toString(T[] a):将一个数组转换成一个字符串。按顺序将多个数组元素连缀在一起,元素间使用英文逗号(,)和空格隔开。
将 浮点数转成中文的读法,如12345,一万二千三百四十五。
思路:小数和整数部分分开处理,整数部分每4位后面添加一个单位如万,亿