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;
}
第三种:
直接一个一个赋值
将一个int型转为string:
String s= Integer.toString(7);
equals和==的对比:
==
用于比较基本数据类型时,如果两个值相同则结果为true
在比较引用时,如果引用指向同一内存地址则为true
equals()
实现对象的比较。
'=='不允许进行复写,所以可以通过复写equals()方法来达到比较对象内容是否相同的目的。
例如字符串类型对equals进行了复写后,就比较两个字符串对象的内容而不是他们的地址:
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
第一个输出false,因为两个对象的地址是不一样的
第二个输出true,因为两个字符串的内容是一样的
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[]这种数组
函数返回布尔数值
二分法的一般书写格式:
数组: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;
}
ArrayList和LinkedList
- ArrayList实现了动态数组的数据结构,LinkedList实现的是链表的数据结构
- 使用get和set方法时使用ArrayList更好,因为LinkedList需要移动指针
- 在列表内部需要频繁实现增删操作时用LinkedList更好,因为ArrayList需要移动复制数据
- ArrayList的空间消耗主要在list列表结尾预留一定的空间,LinkedList的空间消耗主要在每个元素都需要一定的空间大小
ArrayList的初始化
除了general的初始化方法,还可以:
ArrayList<Stirng> obj = new ArrayList<String>(Arrays.asList(String str1, String str2));
或者:
ArrayList<String> list = new ArrayList<String>(){{add("str01"); add("str02");}};
格雷码关于i的表达式:
gray[i]=i^(i/2)
卡特兰数
F(1)=1 F(2)=2
F(n)=(2n)!/(n!(n+1)!) n>2
通过中序遍历和先序遍历构建二叉树:
https://blog.csdn.net/AXIMI/article/details/85276585