JAVA初始化二维数组的方式:
第一种:
int a[][]={{1,2,3},{4,5,6}};
第二种,先指明行数,再对每行的长度申请内存赋值:
int[][] arr3 = new int[5][];//五行
for(int i=0; i<arr3.length; ++i){
arr3[i]=new int[i+1]; //列的长度每次都变化。每次都要重新申请空间(长度)
for(int j=0; j<arr3[i].length; ++j)
arr3[i][j]= i+j;
}
第三种:
直接一个一个赋值
map的使用:
头文件: import java.util.*;
创建一个map:
Map<String,Integer> map=new HashMap<>();
map添加\修改键值对:
map.put("key", 0);
判断对象是否在map的键\值中:
if(map.containsKey(key));
if(map.containsValue(key));
获得对应键的值:
map.get(key);
获得所有键的集合:
Set<String> set=map.KeySet();
遍历map的4种方式:
http://www.cnblogs.com/fqfanqi/p/6187085.html
怎么向二维List中添加List:
List<List> d2=new ArrayList<List>(); //这是一位二维数组
for(int i=0;i<m;i++)
List d1=new List(); //这是一个新添加的一维数组
d2.add(d1);
1>就是每次添加的总是new的List();
2>一个一维数组被添加之后不能被删掉,就是不能:
for(int i=0;i<m;i++)
List d1=new List();
d2.add(d1);
d1.clear();
不然之前添加在d2中的那个d1也会被clear掉
重置ArrayList中某一个元素的值:
List list=new ArrayList();
list.set(0,3); //将list中的第0位置为3
将一个int型转为string:
String s= Integer.toString(7);
equals和==的对比:
int m=3;
int n=3;
System.out.println(m==n);
String str1="123";
String str2="123";
System.out.println(str1==str2);
String str3=new String("123");
String str4=new String("123");
System.out.println(str3==str4);
依次输出true true false
第一个:m和n的内容都是int型数值3,所以true
第二个:str1和str2的内容都是字符串”123”,所以是true
第三个:str3和str4是指向两个不同字符串对象的地址,所以false
首先equals不能用于基本数据类型变量,只能用于比较对象
其次equals比较的是两个变量的地址是否一样
但是,
String str1=new String("123");
String str2=new String("123");
System.out.println(str1.equals(str2));
输出的结果是:true
因为String类对equals进行了重写,所以在string中比较是两个字符串的内容
怎么计算以2为底的对数:
借助换底公式:
double res=Math.log(n)/Math.log(2);
怎么将一个Array数组中的值传递给另外一个数组:
List<List<Integer>> list1;
List<List<Integer>> list2;
list1.addAll(list2);
判断两个数组是否相等:
Arrays.equals(array1, array2)
这里的array1、array2可以是ArrayList对象,也可以是int [] char[]这种数组
函数返回布尔数值
二维数组传参的问题:
只用传入指针int[][] a即可,不用传入行数和列数
行数可以用a.length来表示,列数可以用a[0].length来表示
二分法的一般书写格式:
数组:a 指针:p1, p2
int p1=0,p2=a.length;
while(p1<=p2){
int mid=(p1+p2)/2;
if(a[mid]==target) return;
if(a[mid]<target) p1=mid+1;
else p2=mid-1;
}