【Java学习】004_变量&数据类型&数据类型转换&ASCII编码&运算符

【Java学习】004_变量&数据类型&数据类型转换&ASCII编码&运算符

一、变量

什么是变量?

在一定范围内,可以发生变化的量

变量的定义格式:

格式一:(直接定义)
数据类型  变量名  =  数据;
int       a      =  12;

格式二:(间接定义)
数据类型  变量名;
变量名  =  数据;
int    i;
i  =  12;

二、数据类型

Java中数据类型的分类:

2大类4小类8小种

基本数据类型:4类8种

整型:
    byte(1个字节)
    short(2个字节)
    int(4个字节)
    long(8个字节)
    一个整数,默认的数据类型是int

浮点型:
    float(4个字节)
    double(8个字节)

字符型:
    char(2个字节)

布尔型:
    boolean(1个字节)

在这里插入图片描述

输入:
package com;

public class demo01 {
    public static void main(String[] args) {
        // 定义一个byte类型的变量
        byte a = 12;
        System.out.println(a);

        // 定义一个short类型的变量
        short b;
        b = 13;
        System.out.println(b);

        // 定义一个int类型的变量
        int c = 1;
        System.out.println(c);

        // 定义一个long类型的变量
        long d = 2;
        System.out.println(d);

        // 定义一个float类型的变量
        float e = 3.14f;  // 需要加个大写或小写的F
        System.out.println(e);

        // 定义一个double类型的变量
        double f = 3.14;
        System.out.println(f);

        // 定义一个char类型的变量
        char g = 'a';
        System.out.println(g);

        //定义一个boolean类型的变量
        boolean h = true;
        System.out.println(h);
        boolean i = false;
        System.out.println(i);

        // 定义两个int类型的变量
        int j = 1;
        int k = 2;

        int l = 1, m = 2;

        int n,o;
        n = 1;
        o = 2;
    }
}

输出:
12
13
1
2
3.14
3.14
a
true
false

注:在使用变量的时候需要注意的问题

1. 当我们给float类型变量赋值的时候,要在数据的后面加上F或f
2. 当我们给long类型变量赋值的时候,建议在后面加上L或l
3. 当我们想要使用某个变量的时候,一定要先赋值,再使用,否则会报错
4. 当我们想要给某个变量赋值的时候,要考虑该变量的范围,否则会报错
5. 在同一对花括号内,不能定义同名变量

引用数据类型:(后面介绍)

三、数据类型的转换

隐式类型转换

什么是隐式类型转换?

就是指小的数据类型会自动提升为大的数据类型

    byte b = 1;
    short s = 2;
    int i = 3;
    long l = 4;
    float f = 3.14f;
    double d = 3.15;
    double dd = b + s + i + l + d;
    当多个数据类型参与运算的时候,小的数据类型会自动提升为大的数据类型

注:boolean类型不能和其他数据类型相互转换

byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;
System.out.println(b3); // 编译报错

byte b1 = 1;
byte b2 = b1 + 2;
System.out.println(b2); // 编译报错

// 结论:针对byte和short类型的时候,只有右边有一个是变量,就会编译报错

byte b4 = 126 + 1;
System.out.println(b4);  // 正确

byte b5 = 127 + 1;
System.out.println(b5);  // 报错

强制类型转换

什么是强制类型转换?

是指大的数据类型被强制转换成小的数据类型

强制类型转换的格式:

小的数据类型 小的数据类型的变量名 = (小的数据类型)大的数据类型的变量名;

eg:

int i = 110;
byte b = (byte)i

注:能不使用强制转换,尽量不要使用,因为转不好会出现问题

int i = 130;
byte b = (byte)i;
System.out.println(b);  // -126

在这里插入图片描述

四、ASCII编码表

'a' --> 97,b、c、d、……累加
'A' --> 65,B、C、D、……累加
'0' --> 32,1、2、3、……累加

char c = 'a';
int i = 1;
int a = i + c;
System.out.println(a); // 98   ---->  'a' >>>97

System.out.println(' ' + 0); // 32 ----> ' ' >>>32
System.out.println('0' + 0); // 48 ---> '0' >>>48

在这里插入图片描述

五、运算符

算数运算符

+
    在Java中的含义:
        1. 加减乘除的加
        2. 正负的正
        3. 连接符
            任意数据类型的数据与字符串相连接的时候,那个+号就是连接符
               System.out.println(1 + "abc"); // "1abc"
                System.out.println("abc" + 1); // "abc1"
                System.out.println(true + "abc"); // "trueabc"
                System.out.println('a' + "abc"); // "aabc"

                int i = 1;
                int j = 2;
                System.out.println(i + "abc" + j); // "1abc" + j ---> "1abc2"

                // 已知有两个变量a和b,值分别为1和2,输出 a + b = 3,1 + 2 = 3
                int a = 1;
                int b = 2;
                System.out.println("a + b = " + (a + b)); // a + b = 3
                System.out.println(a + " + " + b + " = " + (a + b)); // 1 + 2 = 3

-

*

/
    整数除以整数,结果仍是整数
       int i1 = 5;
        int j1 = 2;
        int a1 = i1 / j1;
        System.out.println(a1); // 2

        int i2 = 5;
        int j2 = 2;
        double a2 = i2 / j2;
        System.out.println(a2); // 2.0

        int i3 = 5;
        double j3 = 2;
        double a3 = i3 / j3;
        System.out.println(a3); // 2.5

%
    取余
        int i = 3;
        int j = 2;
        int k = 1;
        System.out.println(i % j); // 1
        System.out.println(j % i); // 2
        System.out.println(i % k); // 0

++
    单独使用:
        int i1 = 1;
        int i2= 1;
        int j1 = 2;
        int j2 = 2;
        i1++;
        ++i2;
        j1++;
        ++j2;
        System.out.println(i1); // 2
        System.out.println(i2); // 2
        System.out.println(j1); // 3
        System.out.println(j2); // 3
        不管++是在前还是在后,结果都是加1

    参与运算:
        ++在前:先自身加1,然后再参与运算
            int i = 1;
            int j = ++i;
            System.out.println(i); // 2
            System.out.println(j); // 2
        ++在后,先参与运算,然后再自身加1
            int i = 1;
            int j = i++;
            System.out.println(j); // 1
            System.out.println(i); // 2

    注:
        byte b = 1;
        b = b + 1;
        System.out.println(b); // 报错

        byte b = 1;
        b++; // b = (byte)(b + 1); ++自身带有强制转换
        System.out.println(b); // 2

--
    单独使用:
        int i1 = 1;
        int i2= 1;
        int j1 = 2;
        int j2 = 2;
        i1--;
        --i2;
        j1--;
        --j2;
        System.out.println(i1); // 0
        System.out.println(i2); // 0
        System.out.println(j1); // 1
        System.out.println(j2); // 1
        不管--是在前还是在后,结果都是减1

    参与运算:
        --在前:先自身减1,然后再参与运算
            int i = 1;
            int j = --i;
            System.out.println(i); // 0
            System.out.println(j); // 0
        --在后,先参与运算,然后再自身减1
            int i = 1;
            int j = i--;
            System.out.println(j); // 1
            System.out.println(i); // 0

    int i = 10;
    int j = i++ + ++i + i-- + --i;
    // int a = i++; // a=10, i=11
    // int b = ++i; // i=12, b=12
    // int c = i--; // c=12, i=11
    // int d = --i; // i=10, d=10
    // int j = a + b + c + d; // j = 10 + 12 + 12 + 10 = 44
    System.out.println(j); // 44

赋值运算符

=

+=
    int i = 1;
    i += 2;
    System.out.println(i); // 3

-=
    int i = 1;
    i -= 2;
    System.out.println(i); // -1

*=
    int i = 2;
    i *= 3;
    System.out.println(i); // 6

/=
    int i = 8;
    i /= 2;
    System.out.println(i); // 4

%=
    int i = 8;
    i %= 3;
    System.out.println(i); // 2

注:++,–,+=,-=,*=,/=,%= 都自带了强制类型转换

关系运算符

关系运算符输出的结果一定是boolean类型,也就是说要么是true,要么是false

>
<
>=
<=
!=
==

逻辑运算

左右两边的数据的数据类型都是boolean类型,结果也是boolean类型

&(单与):两边只要有一个是false,结果就为false
    System.out.println(true & true); // true
    System.out.println(true & false); // false
    System.out.println(false & false); // false
    System.out.println(false & true); // false

|(单或):两边只要有一个是true,结果就为true
    System.out.println(true | true); // true
    System.out.println(true | false); // true
    System.out.println(false | false); // false
    System.out.println(false | true); // true

^(异或):两边相同为false,两边不同为true
    System.out.println(true ^ true); // false
    System.out.println(true ^ false); // true
    System.out.println(false ^ false); // false
    System.out.println(false ^ true); // true

!(非):
    System.out.println(!true); // false
    System.out.println(!false); // true
    System.out.println(!!true); // true
    System.out.println(!!!true); // false

&&(双与):同&(单与):两边只要有一个是false,结果就为false
    System.out.println(true && true); // true
    System.out.println(true && false); // false
    System.out.println(false && false); // false
    System.out.println(false && true); // false

||(双或):同|(单或):两边只要有一个是true,结果就为true
    System.out.println(true || true); // true
    System.out.println(true || false); // true
    System.out.println(false || false); // false
    System.out.println(false || true); // true

&和&&的区别,|和||的区别

&&:如果左边为false,右边就不再执行了,结果就为false
&:如果左边为false,右边依然会执行,结果就为false

||:如果左边为true,右边就不再执行了,结果就为true
|:如果左边为true,右边依然会执行,结果就为false

推荐使用&&和||,提高执行效率

位运算符

左右两边的数据都是数字,结果也为数字

&(与位运算):
    System.out.println(3 & 2); // 2

|(或位运算):
    System.out.println(3 | 2); // 3

^(异或位运算):
    System.out.println(3 ^ 2); // 1

        // 实现i和j的调换
        int i = 1;
        int j = 2;
        System.out.println(i + "..." + j); // 1...2

        // 方法一:
        int temp = i;
        i = j;
        j = temp;
        System.out.println(i + "..." + j); // 2...1

        // 方法二:
        i = i ^ j;
        j = i ^ j;
        i = i ^ j;
        System.out.println(i + "..." + j); // 2...1

~(按位取反):

>>(右移位运算):
    System.out.println(3 >> 2); // 0

<<(左移位运算):
    System.out.println(3 << 2); // 12

>>>(无符号右移):
    System.out.println(3 >>> 2); // 0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三元运算符

三元运算符,也称条件运算符、三目运算符
格式:条件表达式 ?表达式1 : 表达式2;
执行流程:

如果条件表达式为true,就会执行表达式1,不会执行表达式2
如果条件表达式为false,就会执行表达式2,不会执行表达式1

public class demo09 {
    public static void main(String[] args) {
        // 获取两个数的最大值
        int i = 2;
        int j = 3;
        int max = i > j ? i : j;
        System.out.println(max); // 3
        System.out.println(i > j ? i : j); // 3
    }
}

注意事项:

  1. 三元运算符是一个运算符,既然是一个运算符,就一定会有一个结果,所以表达式1和表达式2都会得到一个结果,所以表达式1和表达式2中不能是输出语句:
    3 > 2 ? System.out.println(“hehe”) : System.out.println(“haha”); // 格式错误
  2. 表达式1和表达式2既然会得到一个结果,如果传递给一个变量去接收,该变量的数据类型应该和表达式1和表达式2的结果的数据类型匹配:
    double d = 3 > 2 ? 1 : 2;
    System.out.println(d); // 1.0
    ——————————————
    int c = 3 > 2 ? ‘a’ : ‘b’;
    System.out.println(c); // 97
    ——————————————
    char c1 = 3 > 2 ? 97 : 98;
    System.out.println(c1); // a
点击查看

本文标题:【Java学习】004_变量&数据类型&数据类型转换&ASCII编码&运算符

文章作者:Mango

发布时间:2023年08月20日 - 14:57:55

最后更新:2023年08月22日 - 14:58:28

原始链接:https://mango185.github.io/post/a6f919dd.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------