1.固定格式和System中:
public class hello{
public static void main(String[] args){
}
}
需要注意其中的String和System的s为大写开头。
注意:Java中严格区分大小写。
2.声明long型变量,必须以“l”或“L”结尾。
声明float型变量,必须以“f”或“F”结尾。
3.计算机底层都以补码的方式储存数据,负数的原反补码是不一样的。
特别举例:
强制类型转换中,int型(32位)强转byte型就只能保留一个字节(8位)。
则二进制的128里 0000 0000 .... 0000 1000 0000中。
只保留最后八位,则变成了-128(1000 0000)。
4.注意点:
short s1 = 10中
s1 = s1 + 1(int)会出现编译错误,因为出现了强制类型转换。
而s1++和s1+=1不会改变本身的数据类型。
5.位运算符:
<< 每左移一位,相当于*2
>> 每右移一位,相当于/2
&
|
^(可用于数值的交换)
eg:m=k^n=(m^n)^n
6.使用Scanner类
①导包:import java.util.Scanner(System.in);
②Scanner的实例化:Scanner scan = new =Scanner(System.in);
③调用Scanner类的方法(next()/nextXxx()),来获取指定类型的变量。
7.如何获得一个随机数
eg:10 - 99
int value = (int)(Math.random() * 90 + 10);
Math.random() 只能获得[0.0,1.0)的数
[a,b] = (int)(Math.random() * (b-a+1) + a);
8.如果多个switch-case结构中的多个case的执行语句相同,则可以考虑合并。
eg:
int score = 20;
switch(score/10){
case0:System.out.println("不及格")
case1:System.out.println("不及格")
case2:System.out.println("不及格")
case3:System.out.println("及格")
}
可以改为
int score = 20;
switch(score/10){
case0:
case1:
case2:System.out.println("不及格")
case3:System.out.println("及格")
9.获取最大公倍数于最小公因数
//获取最大公约数
//1.获取两个数中的较小值
int min = (m <= n)? m : n;
//2.遍历
for(int i = min;i >= 1 ;i--){
if(m % i == 0 && n % i == 0){
System.out.println("最大公约数为:" + i);
break;//一旦在循环中执行到break,就跳出循环
}
}
//获取最小公倍数
//1.获取两个数中的较大值
int max = (m >= n)? m : n;
//2.遍历
for(int i = max;i <= m * n;i++){
if(i % m == 0 && i % n == 0){
10.标签的使用:
在循环体中,若出现多重循环的嵌套,则可以使用对循环进行标签,并使用break和continue进行循环的跳出
eg:label:for(xxx;xxx;xxx){
for(xxx;xxx;xxx){
break laber;结束指定标识的一层循环
continue laber;结束指定表示的循环结构的当次循环
}
}
11.使用.toUpperCase()能使编译不区分大小写,自动转换为大写字母。
eg:String str = readKeyBoard(1).toUpperCase()
12.数组元素和对象的属性的默认初始化值
* > 是整型:0
* > 是浮点型:0.0
* > 是char型:0或'\u0000',而非'0'
* > 是boolean型:false
* >是引用数据类型:null
13.数组元素的默认初始化值
* 针对于初始化方式一:比如:int[][] arr = new int[4][3];
* 外层元素的初始化值为:地址值
* 内层元素的初始化值为:与一维数组初始化情况相同
* 针对于初始化方式二:比如:int[][] arr = new int[4][];
* 外层元素的初始化值为:null
* 内层元素的初始化值为:不能调用,否则报错。