java基础
Contents
整型数据范围
byte:-128 ~ 127 (1个字节,$-2^{7}至(2^{7}-1)$)
short: -32768 ~ 32767 (2个字节,$-2^{15}至(2^{15}-1)$)
int: -2147483648 ~ 2147483647 (4个字节,$-2^{31}至(2^{31}-1)$)
long: -9223372036854775808 ~ 9223372036854775807 (8个字节,$-2^{63}至(2^{63}-1)$)
数学公式
调用Math函数
String
StringBuffer
需要动态改变string时通常使用StringBuffer 和 StringBuilder类
String和char[]互转
- char[] to String
String s = String.valueOf(char[])
String s = new String(char[]) - String to char
char[] c = s.toCharArray()
char转int
int n = char -‘0’
String转int
int n = Integer.valueOf(String s)
hashSet
只能为引用类型
自定义sort排序函数
- 类数组
//按二维数组intervals第二位升序排序 Arrays.sort(intervals, new Comparator<int[]>() { @Override public int compare(int[] a, int[] b) { return a[1] - b[1]; } });
- 集合
Collections.sort(n,new Comparator<T>(){ @Override public int compare(T o1, T o2) { ... } });
二维数组
二维数组本质上也是个一维数组,但该一维数组的每个元素又都是一个一维数组。
- 初始化
//静态初始化 int[][] a={{1,2,3,4},{4,5,6,7},{8,9,10,11}}; //动态初始化 String[][] b=new String[10][10]; b[0]=new String[]{"zahngsan","lisi","wangwu"}; b[1]=new String[]{"java","python","c++"};
列表
- 初始化
List<int[]> list= new LinkedList<int[]>(); List
list = new ArrayList (Arrays.asList("")); List 中T需为泛型,int等基本数据类型不可行。 - 转数组
list.toArray(T[] a); //T[] a 表示用于存放的数组
- 获取元素
用list.get(i)而不能用list[i],只有数组才能直接访问
参数传递
java中函数传参是值传递, 不是引用传递.
- 值传递 (pass by value): 是指在调用函数时将实际参数复制一份传递到函数中, 这样在函数中如果参数进行修改,将不会影响到实际参数。
- 引用传递 (pass by reference): 是指在调用函数时将实际参数的地址直接传递到函数中, 这样在函数如果对参数进行修改, 将影响实际参数。
- 一个方法不能修改一个基本数据类型的参数;
- 一个方法可以改变一个对象参数的状态(属性);例如:
public void testParam(){
User user = new User("zs", 1);
pass(user);//user.username改变为张三
System.out.println(user);
}
public static void pass(User u){
u.setUsername("张三");
}
- 一个方法不能实现让对象参数引用一个新对象;例如:
public void testParam(){
String a="abc";
pass(a);//a还是abc
System.out.println(a);
}
public static void pass(String a){
a = "ABC";
}