Java基础知识点(二)

一、算术运算符

操作符 描述 例子
+ 加法 - 相加运算符两侧的值 10 + 20 等于 30
- 减法 - 左操作数减去右操作数 10 – 20 等于 -10
* 乘法 - 相乘操作符两侧的值 10 * 20等于200
/ 除法 - 左操作数除以右操作数 20 / 10等于2
取余 - 左操作数除以右操作数的余数 20%10等于0

注意事项:

/%的区别:两个数据做除法,/取结果的%取结果的余数
整数操作只能得到整数,想要得到小数,必须有浮点数参与运算。

public class OperatorDemo01 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a + b = " + (a + b) );
        System.out.println("a - b = " + (a - b) );
        System.out.println("a * b = " + (a * b) );
        System.out.println("b / a = " + (b / a) );
        System.out.println("b % a = " + (b % a) );
        System.out.println("c % d = " + (6.0 % 4) );

    }
}

字符的"+"操作

拿字符在计算机底层对应的数值来进行计算

'A' ==>'Z' 连续的65起
'a' ==>'z' 连续的97起
'0' ==>'9' 连续的48起

public class OperatorDemo02 {
    public static void main(String[] args) {
        //定义两个变量
        int i = 10;
        char c = 'A';//'A'的值是65
        System.out.println(i+c);
        c = 'a';//'a'的值是97
        System.out.println(i+c);
        c = '0';//'0'的值是48
        System.out.println(i+c);
    }
}

算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
提升规则:

  • byte类型,short类型和char类型将被提升的int类型
  • 整个表达的类型自动提升到表达式中最高等级操作数同样的类型
    等级顺序:byte,short,char => int => long => float => double
public class OperatorDemo02 {
    public static void main(String[] args) {
        //定义两个变量
        int i = 10;
        char c = 'A';//'A'的值是65
        System.out.println(i+c);
        c = 'a';//'a'的值是97
        System.out.println(i+c);
        c = '0';//'0'的值是48
        System.out.println(i+c);
        //char ch = i + c;
        //char类型会被自动提升为int类型
        int j = i + c;
        System.out.println(j);
        //int k = 10 + 13.14;
        double g =  10 + 13.14;
        System.out.println(g);
    }
}

字符串的"+"操作

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符。
在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。

public class OperatorDemo03 {
    public static void main(String[] args) {
        System.out.println("Hello" + "World");
        System.out.println("Hello" + "World" + 666);
        System.out.println(666 + "Hello");

        System.out.println("Hello" + 666 + 6);
        //Hello6666
        System.out.println(999 + 1 + "Hello");
        //1000Hello
    }
}

二、赋值运算符

操作符 描述 例子
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C
+ = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A
- = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C - A
* = 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 C * = A等价于C = C * A
/ = 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 C / = A,C 与 A 同类型时等价于 C = C / A
%= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 C%= A等价于C = C%A

扩展的赋值运算符隐含了强制类型转换

public class OperatorDemo04 {

    public static String getType(Object test) {
        return test.getClass().getName().toString();

    }

    public static void main(String[] args) {
        //把10赋值给int类型的变量i
        int i = 10;
        System.out.println("i:" + i);
        i += 20;
        System.out.println("i:" + i);

        //注意:扩展的赋值运算符底层隐含了强制类型转换
        short s = 10;
        s += 20;
        System.out.println(getType(s));
        System.out.println("s:" + s);
    }
}

三、自增自减运算符

B=20

操作符 描述 例子
++ 自增: 操作数的值增加1 B++ 或 ++B 等于 21(区别详见下文)
-- 自减: 操作数的值减少1 B-- 或 --B 等于 19(区别详见下文)
public class OperatorDemo05 {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        System.out.println("i:" + i);

        //单独使用
        i++;
        System.out.println("i:" + i);
        ++i;
        System.out.println("i:" + i);

        //参与操作使用
        int j = i++;
        System.out.println("j:" + j);
        int g = ++i;
        System.out.println("g:" + g);
    }
}

注意事项

  • ++和--既可以放在变量的后边,也可以放在变量的前边。
  • 单独使用的时候,++和--无论是放在变量的前边还是后边,结果是一样的。
  • 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
  • 参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。
    最常见的用法:单独使用

四、关系运算符

运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (A> B)为假。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (A <B)为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (A> = B)为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。

注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。
千万不要把“==”误写成“=”

public class OperatorDemo06 {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        int j = 20;
        int k = 10;

        System.out.println(i == j);
        System.out.println(i == k);
        System.out.println("---------------");

        System.out.println(i != j);
        System.out.println(i != k);
        System.out.println("---------------");

        System.out.println(i > j);
        System.out.println(i > k);
        System.out.println("---------------");

        System.out.println(i == j);
        System.out.println(i == k);
        System.out.println("---------------");

        System.out.println(i >= j);
        System.out.println(i >= k);
        System.out.println("---------------");

        //不小心把==写成了=
        //把j的值赋值给了i,然后输出i的值
        System.out.println(i = j);
    }
}

五、逻辑运算符

操作符 描述 例子
& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A & B)为假。
| 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A & B)为真
^ 称为逻辑异或算符。 (A ^ B)为真
public class OperatorDemo07 {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        int j = 20;
        int k = 30;
        //& 有false则有false
        System.out.println((i > j) & (i > k));
        System.out.println((i < j) & (i > k));
        System.out.println((i > j) & (i < k));
        System.out.println((i < j) & (i < k));
        System.out.println("---------------");
        //| 有true则true
        System.out.println((i > j) | (i > k));
        System.out.println((i < j) | (i > k));
        System.out.println((i > j) | (i < k));
        System.out.println((i < j) | (i < k));
        System.out.println("---------------");
        //^ 相同为false,不同为true
        System.out.println((i > j) ^ (i > k));
        System.out.println((i < j) ^ (i > k));
        System.out.println((i > j) ^ (i < k));
        System.out.println((i < j) ^ (i < k));
        System.out.println("---------------");
        //!
        System.out.println(!(i > j) );
        System.out.println(!!(i > j) );
        System.out.println(!!!(i > j) );
        System.out.println(!!!!(i > j) );
        System.out.println("---------------");
    }
}

短路逻辑运算符

操作符 描述 例子
&& 短路与 作用和&相同,但是有短路效果 。
| | 短路或 作用和 相同,但是有短路效果 。

注意事项:

  • 逻辑与&,无论左边真假,右边都要执行。
    短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行;
  • 逻辑或|,无论左边真假,右边都要执行。
    短路或||,如果左边为假,右边执行;如果左边为真,右边不执行;
public class OperatorDemo08 {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        int j = 20;
        int k = 30;
        //&& 有false则有false
        System.out.println((i > j) && (i > k));
        System.out.println((i < j) && (i > k));
        System.out.println((i > j) && (i < k));
        System.out.println((i < j) && (i < k));
        System.out.println("---------------");
        //|| 有true则true
        System.out.println((i > j) || (i > k));
        System.out.println((i < j) || (i > k));
        System.out.println((i > j) || (i < k));
        System.out.println((i < j) || (i < k));
        System.out.println("---------------");

        //&与&&的区别
//        System.out.println((i++ > 100) & (j++ > 100));
        System.out.println((i++ > 100) && (j++ > 100));
        System.out.println("i:" + i);
        System.out.println("j:" + j);
    }
}

六、三元运算符

格式

关系表达式 ?表达式1 :表达式2

范例

a > b ? a : b

执行流程

首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果

public class OperatorDemo09 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        //获取两个数中较大值
        int max = a > b ? a : b;
        System.out.println("max:" + max);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容