1:数据的输入中,也需要提前声明变量。java区分大小写,注意保留字的问题,注意分号。
2:用import调用一个类。用new新建一个对象,相当于c中的malloc。
3:用final定义一个宏,相当于#define PI 3.1415926 用final表示为:final double PI 3.1415926 注意:需要加入类型。
4:java中的单字节被 byte代替。
5:变量的赋值,以及数字的运算上没有变化。注意除法,5/9 = 0。
6:数字后面加相应的字母表示相应的类型,比如1.0f和1.0F表示float类型,1.0d和1.0D表示double类型。
7:自增自减和强制类型转换一样适用,注意强制类型转化的时候大的转换成小的必须显式的声明,大的转换小的可能丢失数据精度。
8:char ‘a’; 和 char “a”; 不一样的地方在与第一个声明a是一个字符,第二个声明a是一个字符串。
9:注意在java中,char 表示2个字节,只有byte表示1个字节。
10:java中char只能声明一个字符,要是声明字符串,我们需要String类型。并且我们可以给String 类型的字符串进行字符串的加法和减法操作。
11:注意命名规则:
变量名和方法:如果只有一个单词,则小写,如果有多个单词,则第一个单词小写,其余的单词每个首字母大写。
类名:类名中的每个单词首字母都应该大写。
还有一般大写字母中的单词之间常用下划线隔开。并且一般使用完整的单词更具有描述性。
12:next()方法用来读取以\n \f \t ’ ’ 结束的字符串。
13:Integer.parseInt : Integer中的parseInt方法将一个字符串转化成Int类型。
14:注意要是需要格式化输入输出的话,用System.out.printf(” %d”,s); 格式和printf的格式一致,但是注意如果需要输出一个%,那么应该%%。
15:两种产生随机数的方法:
(1):int number1 = (int)(System.currentTimeMillis() % 10); //函数本身返回一个long类型的,但是可以通过强制类型转化和求余的方法将数字控制在想要的范围。例子中就是将数字控制在了0到10之间。
(2):int number1 = (int)(Math.random() * 10); //Math.random()函数的返回值是一个双精度的值,0.0 <= d <= 1.0,我们的例子会返回一个从1到10的值。
16:int 类型和boolean之间不能相互强制类型转换:
boolean a = true;
int b = (int)a;
这样是错误的。
17:有关java的数组:我们需要首先声明一个类型:
c语言这样:int a[5];
java这样:int[] a = new int[5]; //new这个过程需要我们显式的指出来。那好,再顺便说说这个方式,我觉得这样声明数组更容易理解,就像我们声明变量一样,
int a = 5; int就是a的类型,现在int[] a = new int[5]; a数组的类型就是int[] ,是一个数组类型,后面我们再为它分配5个int的类型的空间。
18:java图形显示函数:JOptionPane.showInputDialog()中,第四个参数的意思是输入窗口之前的图标,有以下几个选项:
JOptionPane.INFORMATION_MESSAGE:一个字母i,表示信息。
JOptionPane.ERROR_MESSAGE :错误的小x
JOptionPane.PLAIN_MESSAGE:什么信息也没有
JOptionPane.WARNING_MESSAGE:一个三角形中一个”!”
19:不要用浮点数来设置标志位的循环,例如下面的代码,实际上就是一个无限循环,
double i = 1;
double sum = 0;
while(i != 0){
sum += i;
i -= 0.1;
}
System.out.println(sum);
因为i的值最后也只是近似的等于0,并不会实际等于0。
20:定义和声明不同,定义指的是定义的条目是声明,而声明会为被定义的条目分配内存。
21:java中的方法就是c语言中的函数,之所以叫方法,原因是c是面向过程的,java面向对象,假设我在add类下有main,和sum两种方法,除了main方法不能调用之外,其他的方法都是可以相互调用的,而且在别的类里面,我也可以通过add.sum来调用sum方法。
22:java中的重载方法,主要是针对方法名相同,但是参数不同的情况。针对参数不同的情况进行“精确”匹配。后面注意区分重载和覆盖的不同。
23:在for循环头中声明的变量的作用域是整个for循环。
24:产生随机数和随机字符的方法。(很实用)
25:java的数组需要我们显式的为其分配空间,例如:int[] array = new int[5]; 并且array的长度我们可以通过array.length得到。
java对于数组的遍历提供简单的方法:例如遍历array
for(int u:a)
{
System.out.print(u);
}
26:复制数组的方法有三种:
(1):使用循环语句逐个复制元素。
(2):使用System类中的静态方法arraycopy。 System.arraycopy(a,0,b,0,a.length); 表示把a从0号元素开始全部拷贝一份给b。
(3):使用clone方法复制。
27:java中数组和c语言本质上还是一样的,对于给方法中传递的数组,我们传进去的还是数组的引用,所以可以在方法中修改数组的值。但是变量是不可以的。
28:java可以把类型相同但是个数可变的参数传递给方法。
29:慢慢的,你得有一种方法或者你得有一种意识去让自己的程序通过各种方法变得容易让人理解和读懂。
30:查找方法:线性查找法和二分查找法。
线性查找法:依次遍历,找到返回,时间复杂度是O(n);
二分查找法:适合于已经排好序的情况,这样时间复杂度是O(log(n))
public static int binarySearch(int[] list,int key){
int low = 0;
int high = list.length - 1;
while(low <= high){
int middle = (high+low)/2;
if(key > list[middle]){
low = middle + 1;
}
else if (key == list[middle]){
return middle;
}
else{
high = middle - 1;
}
}
return -low-1;
}
31:几种常见的排序方法:
(1):选择排序:互换元素,每次得到目前最大或者最小的一个,时间复杂度O(n^2)
public static void selectSort(int[] list){
for (int i = 0; i <list.length ; i++) {
for (int j = i+1; j <list.length ; j++) {
if(list[i] < list[j]){
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
(2):插入排序,每次反复得到一个元素,比较移动放到适合的位置。
public static void insertSort(int[] list){
for (int i = 1; i < list.length; i++) {
int current = list[i];
int k;
for ( k =i-1 ; k>=0 && list[k] > current ; k--) {
list[k+1] = list[k];
}
list[k+1] = current;
}
}
(3):桶排序,先初始化桶全为0,然后每读取一个数据就给相应的桶加1
public static int[] bumpSort(int[] list){
int[] bump = new int[10000];
for (int i = 0; i < list.length; i++) {
bump[list[i]]++;
}
return bump;
}
for (int i = 0; i < bump.length; i++) {
//for (int j = 1 ; bump[i] >= j ; j++) { //这个条件是不剔重复输出
//if(bump[i] >= 1){ //这个条件是剔重的输出
System.out.print(i+" ");
}
}
32:Arrays类:
在java中,为我们提供了一个Arrays类去处理我们的有关数组的排序和二分查找以及判断两个数组是否相等的方法,例如:
java.util.Arrays.sort(数组名); 可以对一个数组进行排序。
java.util.Arrays.sort(数组名,0,5); 对一个数组的0号元素到5号元素进行排序,
java.util.Arrays.binarySearch(数组名,’查找字符’); 对‘查找字符’元素在数组中进行二分查找。
java.util.Arrays.equals(数组名,数组名); 比较两个数组是否相同,相同返回true,不相同返回false。