北大慕课Java程序设计【三】数据运算、流控制和数组

目录

一、Java 数据类型介绍

1. 数据类型的分类

2. 四类基本数据类型

3. Java 的标识符(Identifier)

二、运算符与表达式

1. 运算符

2. 表达式

三、流程控制语句

1. 程序的三种基本流程:顺序、分支、循环

2. 分支语句

3. 循环语句

4. 特殊流程控制语句

四、数组——引用类型

1. 数组概述

2. 数组的声明

3. 数组初始化

4. 数组元素的引用

5. 增强的 for 语句

6. 数组的复制

7. 多维数组

8. 综合应用


一、Java 数据类型介绍

1. 数据类型的分类

→ 数据类型决定数据的存储方式和运算方式

Java 中的数据类型分为两大类:基本数据类型、引用类型

① primitive types:byte,short,int,long;float,double;char;boolean

→ Java 中有8种基本数据类型(4类:整数型、浮点数型、逻辑型、字符型)

② reference type:class,interface,数组

【注意】基本类型:变量在栈(这里)

        引用类型:变量引用到堆(那里),类似于 C++ 里面的指针

double d = 4;
Person p = new Person();
double d2 = d; // 复制的值
Person p2 = p; // 复制的引用(内存地址,引用到同样的位置)

【注意】赋值时,基本类型复制的值;引用类型复制的是引用

2. 四类基本数据类型

① 逻辑型(1个字节)

boolean b = true; // 只能取 true 或 false
// [注意] 不可以用 零 或 非零来替代 true 或 false
// if (b = 5) 是不允许的
if (b) {
    System.out.print("true");
}

→ 关于 true 和 false 的说明:

class JavaBoolean {
    public static void main(String[] args) {
        boolean a = true; // 编译过后,在计算机中是以 0,1 存储的
        boolean b = false; // 但是,在编程时整型和布尔型是不能混淆的
        System.out.println(a + ", " + b);
    }
}

② 字符型(2个字节)

char c = 'A';
// char c1 = "A"; 不能用双引号
System.out.println(c);
char c2 = '\u4e00';
// Java 字符采用 Unicode 编码,每个字符占两个字节
System.out.println(c2);

→ 转义字符:

【说明】\ddd 1到3位八进制数所表示的字符 ddd;

        \uxxxx 1到4位十六进制数所表示的字符 xxxx;

        \' \" \\ 分别表示单引号、双引号、反斜杠;

        \r 回车  \n 换行  \f 换页  \t 横向制表符  \b 退格;

③ 整数型(整型——4个字节;长整型——8个字节)

// 八进制,0 开头;十六进制 0x 0X 开头;二进制 0b 0B 开头
int i = 3; // Java 语言的整型常量默认为 int 型
long l = 3L; // 声明 long 型常量后可以加 l 或 L
// Java 中没有无符号数 uint 可以用 long 来模拟

【注意】Java 各整数类型有固定的表数范围和字符长度,而不受具体操作系统影响,以保证 Java 程序的可移植性

→ Java 语言整型常量的三种表示形式:

        ① 十进制整数:如12,-314,0

        ② 八进制整数:要求以 0 开头,如 012

        ③ 十六进制整数:要求 0x 或者 0X,如 0x12

        ④ 二进制整数:以 0b 或 0B 开头,如 0b00010010

【注意】Java 语言的整型常量是 int 型,如 int i = 3;

        声明 long 型常量可以后加 l 或 L,如 long l = 3L;

④ 浮点数型(float 型——4个字节;double 型——8个字节)

→ Java 语言浮点类型常量有两种表示形式:

        ① 十进制数形式,必须含有小数点,如:3.14,314.0,.314

        → Java 7 以上,123_456.789_000(千分位分隔符用下划线表示)

        ② 科学计数法形式,如:3.14e2,3.14E2,314E2

【注意】Java 浮点型常量默认为 double 型

        如果要声明一个常量为 float 型,需要在数字后面加 f 或 F,如:float f = 3.14f;

3. Java 的标识符(Identifier)

→ 由字母、数字、下划线、$ 组成;必须以字母、下划线、$ 开头;对大小写敏感

→ 类名首字母用大写(Pascal);其余的首字母用小写(camel)

→ 常量随使用随定义;尽量少用下划线

二、运算符与表达式

1. 运算符

运算符有算术运算符 +  -  *  /  %  ++  --;逻辑运算符 &  &&  |  ||  !  ^ ;字符串连接运算符 + 等

① 算术运算符

int a = 15 / 3; // 整数除法
double b = 15 / 2.0; // 实数除法
System.out.println(b);
System.out.println(a % 2);
System.out.println(-a % 2);
System.out.println(a % -2);
System.out.println(-a % -2);
// % 的负符号根据被除数决定

② 逻辑运算符

【注意】区分逻辑运算符和短路逻辑运算符:&& 短路逻辑运算符

public class Main {
    public static void main(String[] args) {
        MyDate d = new MyDate();
        d.setDay(12);
        if ((d != null) && (d.getDay() > 31)) {
            System.out.print(d.getDay());
        }
    }
}

class MyDate {
    private int day;

    public void setDay(int day) {
        this.day = day;
    }

    public int getDay() {
        return this.day;
    }
}

        → && 第一个操作数为假 → 不判断第二个操作数
        → || 第一个操作数为真 → 不判断第二个操作数
        → ~ & | ^ 根据操作数来确定是逻辑还是数(^ 不是乘方)

System.out.println(1 << 3);
System.out.println(-9 >> 3);
System.out.println(-9 >>> 3); // 无符号右移

③ 位移运算符(适用于 byte、short、char、int、long)

class BitwiseOperator {
    public static void main(String[] args) {
        int a = 0b1100;
        int b = 0b1010;
        myPrint("a: ", a);
        myPrint("b: ", b);
        myPrint("a & b", a & b);
        myPrint("a | b", a | b);
        myPrint("a ^ b", a ^ b);
        myPrint("~a", ~a);
        myPrint("a << 2", a << 2);
        myPrint("a >> 2", a >> 2);
        myPrint("a >>> 2", a >>> 2);
    }

    static void myPrint(String prefix, int n) {
        StringBuilder s = new StringBuilder(Integer.toBinaryString(n));
        while (s.length() < 4) {
            s.insert(0, "0");
        }
        System.out.println(prefix + " " + s);
    }
}

        → 左移 a << b:将二进制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值