博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 基本问题
阅读量:6273 次
发布时间:2019-06-22

本文共 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

你可能感兴趣的文章
【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean...
查看>>
Nginx多站点设置及负载均衡
查看>>
Spring中bean注入前后的一些操作:
查看>>
如何让oracle DB、监听和oem开机启动(dbstart)
查看>>
HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
查看>>
MailMail正式发布!注册码免费发放活动开启!(已结束~~不要再回复咧~)
查看>>
一个分层架构设计的例子(2)
查看>>
时态数据库的应用介绍(2)--时态数据库之TimeDB
查看>>
BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
查看>>
Linux kernel scriptes bin2c "\x"
查看>>
当智能交通遇上大数据 智能交通不再是梦
查看>>
iOS开发 - Content hugging priority & Content compression resistance priority
查看>>
centos6下mysql的主从复制的配置
查看>>
Object-C---&gt;Swift之(七)嵌套函数与闭包
查看>>
css继承样式怎么控制?用选择器
查看>>
Http和Https三次握手那些事
查看>>
WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主
查看>>
105.4. Installing Ganglia on Centos
查看>>
Drupal 曝出代码执行高危漏洞,数百万网站受影响
查看>>
SAP MM 移动类型107和109之研究
查看>>