本文共 5026 字,大约阅读时间需要 16 分钟。
1、Java 基本数据类型与引用数据类型
class test { public static void main(String[] args){ # 引用数据类型 = 基本数据结构 + 方法 test t = new test(); # 基本数据结构 char c1 = 'a'; byte b1 = 2; short s1 = 13; int i1 = 12; long l1 = 123; double d1 = 1234; System.out.println(""+c1+i1); System.out.println(t.judgeType(c1)); }public String judgeType(Object temp) { if (temp instanceof Byte) { return "是Byte类型"; } else if (temp instanceof Integer) { return "是Integer类型"; } else if (temp instanceof Short) { return "是Short类型"; } else if (temp instanceof String) { return "是String类型"; } else if (temp instanceof Long) { return "是Long类型"; } else if (temp instanceof Float) { return "是Float类型"; } else if (temp instanceof Double) { return "是Double类型"; } else if (temp instanceof Character) { return "是Character类型"; } else { return "是引用数据类型"; }}}
2、算术运算符
// 错误: 不兼容的类型: 从double转换到int可能会有损失int i1 = 0.1;// 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理int i1 = (int)0.1;int i1 *= 0.1;# 结果为 0System.out.println(i1);
3、逻辑运算符
&和&&的区别: 单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算! 建议使用 &&“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算!异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
示例:
// 结果异常: Exception in thread "main" java.lang.ArithmeticException: / by zeroif ( false & (1/0 > 1) ){ System.out.println("true");}else{ System.out.println("false");}// 结果为false// 双&时,如果左边为假,那么右边不参与运算!if ( false && (1/0 > 1) ){ System.out.println("true");}else{ System.out.println("false");}
4、位运算符
// 带符号右移: 最高位用符号位补// -8System.out.println(-31>>2);// 无符号右移: 最高位用0补// 1073741816System.out.println(-31>>>2);# 位运算解决基本数据类型交换int m = 5;int n = 17;System.out.println("m:"+m+" n:"+n);m = m ^ n;n = m ^ n; // (5 ^ 17) ^ 17 = 5m = m ^ n; // (5 ^ 17) ^ 5 = 17System.out.println("m:"+m+" n:"+n);
5、三元运算符
// 三元运算符与if-else的联系与区别 // 1、三元运算符可简化if-else语句 // 2、三元运算符要求必须返回一个结果 // 3、if后的代码块可有多个语句示例: // 三个值寻找最大值 int m = -5; int n = 17; int k = 12; System.out.println( (k > ((m > n)? m:n)) ? k : ((m > n)? m:n) );
6、if条件判断
// 条件判断可以嵌套//1、如果多个条件是"互斥",多个条件上下顺序是自由的//2、如果多个条件是"包含",要求范围小的写在范围大的前面int score = 40;if (score >= 80){ System.out.println("优秀");}else if (score >= 60){ System.out.println("合格");}else { System.out.println("不及格");}
7、swith-case
// 当多个case处理语句相同时,可以统一处理// 当变量是 char/byte/short/int/string/枚举 可以与if相互转换;// case只能是值,不能是取值范围;int score = 76;switch (score / 10) { case 10: case 9: case 8: case 7: case 6: System.out.println("合格"); break; case 5: case 4: case 3: case 2: case 1: case 0: System.out.println("不合格"); break; }// 输入年、月、日计算具体天数class test {public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入年、月、日:"); int year = sc.nextInt(); int month = sc.nextInt(); int day = sc.nextInt(); int sum = 0; // 判断是否为闰年 // 1、可以被4整除,但不可以被100整除; // 2、可以被400整除; switch (month) { case 12: sum += 30; case 11: sum += 31; case 10: sum += 30; case 9: sum += 31; case 8: sum += 31; case 7: sum += 30; case 6: sum += 31; case 5: sum += 30; case 4: sum += 31; case 3: if (year/400 == 0) { sum += 29; }else if (year/100 == 0){ sum += 28; }else if (year/4 == 0){ sum += 29; }else{ sum += 28; } case 2: sum += 31; case 1: sum += day; } System.out.println("天数:"+sum);}
}
8、for循环
// 外层控制行数,内层控制列数for (int i=2;i<10;i++){ // 假设i是质数 boolean flag = true; for(int j=2;j<=Math.sqrt(i);j++){ // 如果被(2-i的开方)整除,则不是质数 if(i % j == 0){ flag = false; break; } } if(flag) { System.out.println(i); flag = false; }}
9、continue &break &lable
long start = System.currentTimeMillis(); lable:for (int i=2;i<100;i++){ // 假设i是质数 for(int j=2;j<=Math.sqrt(i);j++){ // 如果被(2-i的开方)整除,则不是质数 if(i % j == 0){ continue lable; } } System.out.println(i); } long end = System.currentTimeMillis(); System.out.println(end - start);
10、数组常见异常
String[] arr = new String[3]; // 1、数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException: System.out.println(arr[10]); // 2、空指针异常:java.lang.NullPointerException // 第一种 // arr=null; // System.out.println(arr[1]); // 第二种 // System.out.println(arr[1].toString()); // 第三种 int[][] arr2 = new int[3][]; System.out.println(arr2[2][0]); // arr2[2][0] = 12;
转载于:https://blog.51cto.com/f1yinsky/2131315