c3主要讲了基本类型的使用方法,包括基本类型 String 输入输出 数组
目录
基本类型:
1.基本类型
java中分为内置类型(包括基本类型)和jar包中的类(比如String)
在java中 基本类型的字节数不因为操作系统的位数而变化,增加了java语言的可扩展性
相反,在C中32bit和64bit的系统 int类型的字节数分别为2bytes和4bytes,其他类型也一样
同时,java中不存在unsigned类型
Math库中的函数只对基本类型进行操作
2.基本类型的精度问题
基本类型在内存当中以二进制存储,float 和 double 类型以 a*b^c形式存储,a,b,c分别用不用的bit表示
当精度有损时,要进行cast转换才能不产生complie error
比如最典型的double问题
float f = 2.0;(c error)
float f = 2.0f;
float f = (float)2.0;
下图实线表示 转换无损 虚线为转换有损
注意int -> float, long ->double均为有损转换
基本类型的加法:
String
string的immutable特性
Stirng的不可变性是设计者从字符串共享的角度出发的结果
ep:
String a = "Iphone7";
String b = a;
String a = a.substring(0.a.length())+ "8";
如果在原地修改的话,指向String的所有引用(a,b)都会指向修改后的对象,这并不是我们想要做的结果
StringBuffer和StringBuilder
StringBuilder是StringBuffer的进化版本,效率更高但不具有线程安全性
StringBuffer支持多线程
- String a = ""和 String b = null的区别
- Code Units 和 Code Points
- StringBuffer和StringBuilder
Array
Array的复制
int[] array1 = {1,2,3,4,5};
int[] array2 = array1;//1,2指向同一个数组
int[] array2 = Arrays.copyOf(array1,array1.length);//1,2分别指向两个数组
int[] array1 = Arrays.copyOf(array1,array1.length<<1)//该方法也可以用于增加原数组的长度
Array的默认初始值
基础类型(boolen)以外,0
boolen,false
对象,null
二维数组的遍历
for(double[] row:a)
for(double value:row)
二维数组的逻辑模型
int[] a = new int[10];
int* a = new int[10];//C++
int[][] array = new array[10][10];
int** array = new int*[10];//C++