码迷,mamicode.com
首页 > 编程语言 > 详细

Java 基本问题

时间:2018-06-21 17:44:22      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:表示   test   double   错误   als   最大值   ref   ble   oat   

1、Java 基本数据类型与引用数据类型
https://www.cnblogs.com/Latiny/p/8099581.html

案例:

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;
# 结果为 0
System.out.println(i1);  

3、逻辑运算符

 “&”和“&&”的区别:
 单&时,左边无论真假,右边都进行运算;
 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算!
 建议使用 &&

“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算!

异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

示例:

# 结果异常: Exception in thread "main" java.lang.ArithmeticException: / by zero
if ( 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、位运算符

// 带符号右移: 最高位用符号位补
//  -8
System.out.println(-31>>2);
// 无符号右移: 最高位用0补
//  1073741816
System.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 = 5
m = m ^ n; // (5 ^ 17) ^ 5 = 17
System.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) );

Java 基本问题

标签:表示   test   double   错误   als   最大值   ref   ble   oat   

原文地址:http://blog.51cto.com/f1yinsky/2131315

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!