基本类型没有任何成员
而引用类型可以通过.操作符调用对象所属类的成员方法等
基本数据类型与引用类型的内存管理
String
String类型的初始化可以不用new,可以直接String message = "Hello World!"
String类型的一些方法
Array
如果定义一个数组nums -> int [] nums = new int[5]
给其前两个位置赋值 nums[0] = 1;nums[1] = 2;
倘若要输出该数组,print(nums)打印出来的并不是数组的值,而是这一串连续地址空间的首地址值,当然首先可以想到通过遍历数组来输出数组的值,for掉num[i],因为num对象被创建时,经类加载和对象初始化后,成员变量被重新赋值,访问num[0]时是从堆内存中访问的,所以输出的不是地址值而是值。
另一 种方法是利用Arrays.toString()方法返回该数组,可用Arrays.sort为数组排序
多维数组
定义int [][] nums1 = new int[2][3]
初始化赋值nums1[0][0] = 1
二维数组赋值
int[][] nums = {{1,2,3},{4,5,6}};
多维数组的输出需要用到deepToString即Arrays.deepToString(nums1);
常量
用final修饰
算数表达式
整数除整数的结果是整数
x++和++x在单独的情况是相等的
如果有变量赋值才会有区别
y=x++,先将x值赋给y,再增加
y=++x是x先自增1,再赋值给y
强制转换
自动转换(不会有精度的丢失byte->short->int ->long ->float ->double)
隐式强制转换(不会丢失数据和精度)
显式强制转换(比如double x = 1.1,显式转换为int,会有数据和精度的丢失)
简而言之,在类型兼容的前提下(比如int和double等兼容,而int和string不兼容)
如果不会有数据和精度的丢失,则会发生自动转换,而如果会发生精度减小的转化则需要用到显式转换。
字符串和数字的转换 可以用到包裹类型的parseInt(String)方法
如Integer.parseInt(x);
Math类
格式化数字
NumberFormat()是一个抽象函数
但可以通过获取实例化方法来,
例如NumberFormat currency = NumberFormat.getCurrencyInstance();方法中,=右边的就是获取货币实例化的方法,返回的结果是一个数字格式的对象。我们不能通过new来实例化,但可以通过这样的方法来获取对象,其中蕴含的设计模式是工厂模式
shift+f6重命名变量
method chaining
***********NumberFormat.getCurrencyInstance().format(x);
-读写
Scanner scanner. = new Scanner (System.in);
String name = scanner.nextLine().trim;//可以对这一行输入的字符进行操作