1.基本数据类型(byte,short,int,long,char,float,double)及Arrays工具类

发布于 2022年 01月 20日 05:14

Java是一种特殊的高级语言,既具有解释型语言的特征,也具有编译型语言的特征。因为Java程序要经过先编译,后解释两个步骤。

负责解释执行字节码文件的是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)

Java文档注释
  • @author:指定Java程序的作者
  • @version:源文件版本
  • @deprecated:不推荐使用的方法
  • @param:方法参数说明
  • @return:方法返回值说明
  • @see:“参见”,指定交叉参考的内容
  • @exception:抛出异常的类型
  • @throws:抛出的异常
基本数据类型(Primitive Type):
boolean,byte,short,int,long,char,float,double
char 代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型
引用数据类型:
null只能赋值给引用类型,不能赋值给基本数据类型

整数型
Java中整数有4中表示方式:
十进制
二进制:0b或0B开头
8进制:0 开头
16进制:0x或0X开头
计算机以补码的形式存储二进制数值, 补码 减一 取反就得到原码

字符型:
值必须使用''括起来,Java使用16位的Unicode字符集作为编码方式
计算机底层保存字符时,实际是保存该字符对应的编号,char类型的值可以直接作为整数型值来使用,相当于一个16为的无符号整数
char类型的变量,值完全可以参与加减乘除等数据运算,也可以比较大小。
char a = 'A';
char b = 66;
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)内存中。

注意:
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。因此,所有在方法中定义的局部变量都是放在栈内存中;在程序中定义的对象都是放在堆内存中的,堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。

没有多维数组
从数组底层运行机制上看。数组变量其实是一个引用,这个引用指向真实的数组内存。二维数组,实际上就是一维数组,数组中的每个值又是一个一维数组。

Arrays工具类:
提供static修饰的静态方法来直接操作数组。
  • 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位后面添加一个单位如万,亿


推荐文章