zoukankan      html  css  js  c++  java
  • JavaSE(2)

    运算符 :


    // &是只要有0结果就是0

    ​ // 0000 0000 0000 0000 0000 0000 0101 1010 &

    ​ // 0000 0000 0000 0000 0000 0000 1100 0011 =

    ​ // 0000 0000 0000 0000 0000 0000 0100 0010 => 0x42 -> 66

    ​ System.out.println(n1 & n2);

    ​ // |是只要有1结果就是1

    ​ // 0000 0000 0000 0000 0000 0000 0101 1010 |

    ​ // 0000 0000 0000 0000 0000 0000 1100 0011 =

    ​ // 0000 0000 0000 0000 0000 0000 1101 1011 => 0xDB -> 13 * 16 + 11

    ​ System.out.println(n1 | n2);

    ​ // ^是只要不同就是1

    ​ // 0000 0000 0000 0000 0000 0000 0101 1010 |

    ​ // 0000 0000 0000 0000 0000 0000 1100 0011 =

    ​ // 0000 0000 0000 0000 0000 0000 1001 1001 => 0x99 -> 9 * 16 + 9

    ​ System.out.println(n1 ^ n2);

    + 是取一个数本身

    - 取相反数

    / 如果是两个整数相除, 结果会直接丢弃小数部分, 有可能会丢失精度.

    % 取余

    1. 如果n % m == 0 说明n能被m整除.

    2. 如果n % 2 == 0 说明n是偶数, 如果n % 2 != 0, 说明n是奇数

    3. N % M 的结果总是小于M, 让一个完全未知的数落在一个已知的M范围内.

    如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。

    ++n 前加加, 先加后用, 不需要临时空间 效率高

    n++ 后加加, 先用后加, 需要一个临时空间保存老值(也就是用的值), 效率低

    int n = 10; n += 30;

    效果相当于 n = n + 30, 但是不会引起数据类型的变化, 更安全.

    比较运算的结果总是boolean

    比较大小的运算只适用于基本数据类型中的数值型

    ==, != 可以适用于任意数据类型.

    在Java中不可以写成3 < x < 6. 为什么? 因为 3 < x结果是boolean, 让boolean再和6比大小出问题.

    逻辑运算符 只适用于布尔之间.

    逻辑与 : 只要有假就是假

    & 和 && 的区别 就是双& 有短路效果. 在实际使用中必须使用这个.

    逻辑或 : 只要有真就是真

    | 和 || 的区别 双|| 有短路效果, 在实际使用必须使用这个.

    变量 = (布尔表达式) ? 表达式1 : 表达式2; //表达式1和表达2的值类型要一致.

    运算符优先级, 先记住最高的.() 最低的赋值和累操作

    结合性 由高到低

    . () {} ; ,
    R—>L ++ -- ~ !(data type)
    L—>R * / %
    L—>R + -
    L—>R << >> >>>
    L—>R < > <= >= instanceof
    L—>R == !=
    L—>R &
    L—>R ^
    L—>R |
    L—>R &&
    L—>R ||
    R—>L ? :
    R—>L = *= /= %=
    += -= <<= >>=
    >>>= &= ^= |=

    流程控制

    l 顺序结构

    • 程序从上到下逐行地执行,中间没有任何判断和跳转。

    l 分支结构

    • 根据条件,选择性地执行某段代码。

    • 有if…else和switch两种分支语句。

    If

    // if (条件布尔) {

    ​ //语句块; 如果条件布尔为真时此语句块就执行.

    ​ //}

    ​ if (n == 5) {

    ​ System.out.println("n == 5"); // 有条件执行语句

    ​ }

    If else

    If else if else if…

    switch

    l 循环结构

    Ø 根据循环条件,重复性的执行某段代码。

    Ø 有while、do…while、for三种循环语句。

    每日一考_day04

    1. 变量分类有两种分法, 第一种是按数据类型来分,另外一种是按照声明位置来分, 每一种又各分为哪些种类型. 各有什么特点?

    变量分类 :

    1. 按照数据类型来分

    2. 基本数据类型 : 内存区域中保存的是数据本身

    3. 数值型

    4. 整数

    a) byte

    b) short

    c) int

    d) long

    e) char

    1. 浮点数

    2. float

    3. double

    只有数值型之间可以强制互相转换, 只有数值型之间可以比大小.

    在赋值时 :

    如果右侧的量值范围大于左侧的变量类型的范围, 必须强制类型转换(强转有风险)

    如果右侧的量值范围小于左侧的变量类型的范围, 可以直接自动完成.

    double > float > long > int > short > byte

    ​ > char

    3)布尔型 boolean : true, false

    1. 引用数据类型 : 内存区域中保存的是对象地址 : 对象在内存中的某个字节的编号. 本质上是一个正整数, 所有的引用变量都8字节(64位JDK)

    String s = “abc”;

    1. 按照声明位置来分

    2. 局部变量 范围小, 寿命短.

    声明在方法中的变量

    1. 成员变量 范围大, 寿命长

    声明在类中方法外的变量

    2. 计算下列结果, 分析过程, 只需要计算到十六进制形式即可.

    ​ int a = 0x6B;

    ​ int b = 0x5D;

    ​ // 0110 1011 &

    ​ // 0101 1101 =

    ​ // 0100 1001 => 0x49

    ​ System.out.println(a & b);

    // 0110 1011 |

    ​ // 0101 1101 =

    ​ // 0111 1111 => 0x7F

    ​ System.out.println(a | b);

    // 0110 1011 ^

    ​ // 0101 1101 =

    ​ // 0011 0110 => 0x36

    ​ System.out.println(a ^ b);

    3. 运算符%的作用是什么? 有什么实际的应用?

    ​ 1) n % m 如果结果是0, 说明n能被m整除, 如果结果不为0, 说明n不能被m整除

    ​ 2) n % 2 如果结果是0, 说明n是偶数, 如果结果是非0, 说明n是奇数

    ​ 3) n % m 结果总是0~m-1,

    ​ 判断一个数是否是奇数

    ​ If (n & 0x01 == 1) {

    说明它一定是奇数

    }

    4. 判断:

    ​ 1) if else if else if else 语句中, 如果同时有多个条件都为true, 那么将会有多个语句块被执行, 错误, 因为if else 是绝对的分支, 多语句块之间互斥

    ​ 2) switch case case default 语句中, 如果同时有多个条件都为true, 那么将会有多个语句块被执行

    ​ 如果是switch, case, case之间绝对不允许相同

    ​ Switch(n) {

    ​ Case 1 :

    ​ Case 2 :

    ​ Case 1 : // 此行直接报错, 因为case不允许重复

    }

    5. 在switch结构中, switch()括号中的要求具体是什么? case后面的要求又是什么?

    ​ Switch()中的要求是必须是变量或表达式, 数据类型是非long整数.字符串,枚举.

    ​ Case 后面要求必须是常量, 包括字面量和final修饰的量. 不允许表达式和变量

    ​ switch (n * 2 / 5) {

    }

    每日一考_day05

    1. 列出变量的使用注意事项(至少6点)(尝试解释一下原因)

    ​ 1) 必须要有数据类型和变量名

    ​ 2) 先声明, 后使用

    ​ 3) 变量有其作用范围

    ​ 4) 变量有其数据范围

    ​ 5) 变量必须初始化值才能读取.

    ​ 6) 同一范围内变量不允许重复声明.

    2. 变量分类有两种分法, 第一种是按数据类型来分,另外一种是按照声明位置来分, 每一种又各分为哪些种类型. 各有什么特点?

    ​ 分类 :

    1. 按照数据类型来分 :

    2. 基本数据类型 : 内存区域中保存的是数据本身

    3. 数值型 : 可以互相转换, 可以互相比大小

    4. 整数 : byte, short, int, char, long

    5. 浮点数 : float, double

    6. 布尔型 : 都不行, 只允许两个常量值, true, false

    7. 引用数据类型 : 内存区域中保存的是对象地址, 本质上就是内存的某个字节的编号.

    8. 按照声明位置来分 :

    9. 局部变量 : 声明在方法中

    范围小, 寿命短

    1. 成员变量 : 声明在类中方法外

    ​ 范围大, 寿命长

    3. for循环的结构是什么? 执行流程是如何?

    ​ for (初始语句A; 条件语句B; 迭代语句C) { // 和while很像

    ​ 循环体语句D;

    }

    A B D C B D C B D C B D …… B

    迭代语句C 是每次循环的开始语句

    写程序, 打印一个倒直角三角形.

    ​ int n = ?;

    ​ for (int i = 0; i < n; i++) {

    ​ for (int j = 0; j < -i + n; j++) {

    ​ System.out.print(“*”);

    }

    ​ System.out.println();

    }

    循环总结 :

    循环 : 在某些条件满足的情况下, 反复执行特定的代码的功能.

    循环的组成 :

    1. 初始化语句 : 作准备工作, 通常是int i = 0;

    2. 循环条件 : 控制循环的生死, 如果条件为真就一直循环, 直接条件为假. i < n

    3. 循环体 : 被多次执行的语句

    4. 迭代语句 : 让i向n靠近, 每次i++, 使用循环趋于结束, 如果没有迭代, 循环不能自然结束

    while : 适用于循环次数不确定的循环, 结束取决于外部条件

    while (布尔条件) { // 如果布尔条件为假, 循环次数是0~N次

    ​ 循环体; 在循环中控制布尔

    }

    do while : 适用于循环次数不确定的循环

    do { // 如果布尔条件为假, 至少也要循环1次. 循环次数是1~N次.

    ​ 循环体; 在循环体中控制布尔

    } while (布尔条件);

    for : 适用于循环次数确定的循环

    for (初始语句int i = 0; 循环条件 i < n; 迭代语句i++) {

    ​ //循环体;

    }

    方法

    方法 : java程序中某个功能的封装, 一个独立的功能体. 也称为函数

    ​ 方法声明 :

    ​ 修饰符 返回值类型 方法名(数据类型1 形式参数1, 数据类型2 形式参数2, ....) {

    ​ 语句, 方法体

    ​ return 返回值;

    ​ }

    ​ 返回值类型 : 方法的功能的最终体现 , 成果是什么, 数据类型是什么.

    ​ 方法名 : 标识方法的.

    ​ 形式参数 : 形式上需要的数据, 但是实际数据是多少不影响功能, 没有这个数据也不行. 在功能的完成时需要的数据

    ​ return 返回值, 最终的功能的结果数据要返回给调用者

    ​ 调用者 : 使用这个方法的角色. 方法在调用时必须要由调用者传递实际参数.

    ​ 方法 = 方法签名 + 方法体(body)

    ​ 方法签名 : 方法的使用说明书. API

    ​ 方法体 : 实际执行的代码.

    ​ 注意 : 方法不可以嵌套, 必须是并行的.

    ​ 方法调用(method invoke) : 是一个语句

    ​ 方法名(实参列表); // 实参列表必须完全遵照形参的要求来写. 类型和个数及顺序要完全匹配.

    ​ 方法的返回值? 方法调用本身

    ​ 方法的返回值的接收只有一次机会, 错过了, 就错过了....

    如果方法没有返回值, 必须使用void作为返回值类型

    如果方法不需要参数, 参数列表空着, 但是()必须要有

    l 注 意:

    Ø 没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

    Ø 定义方法时,方法的结果应该返回给调用者,交由调用者处理。

    Ø 方法中只能调用方法,不可以在方法内部定义方法。

    Ø 方法的返回值只有一次机会接收, 就是在调用时

    Ø 如果在方法中又调用了方法本身, 称为递归调用

    每日一考_day06

    1. 写出while循环和do while循环的区别, 三个循环分别在什么场景下使用?

    ​ While至少执行0次

    ​ Do while 至少执行1次

    ​ While和dowhile 适用于循环次数不确定的循环

    ​ For循环适用于循环次数确定的循环.

    2. 简述break语句和continue语句的作用.

    ​ break 中断某个语句块的执行

    public class BreakTest { public static void main(String[] args) { boolean flag = true; l1 : { System.out.println("hello"); if (flag) { break l1; } System.out.println("world"); // 它不执行 } System.out.println("three"); } }

    ​ continue 中断循环的某次循环, 进入下一次.

    3. 声明定义一个方法的语法格式是什么? 解释每部分的作用.

    ​ 修饰符 返回值类型 方法名(形参列表) {

    ​ 方法体;

    ​ return 返回值;

    }

    方法 = 方法签名(方法的使用说明书) + 方法体(真正执行的)

    修饰符 : 修饰public, private 访问控制修饰符, static 静态, synchronized, abstract, final….

    返回值类型 : 方法执行完毕后的结果数据的类型 ( 输出 ), 返回值只能返回一个.

    方法名 : 标识符

    形参列表 : 形式参数, 形式上的数据, 虽然没有值, 在方法体中可以直接使用. 在方法调用时 会由调用者传入实际的值. 此方法如果需要外部传入的数据, 就可以使用参数.( 输入 )

    方法体 : 由一个个的语句构成, 是将来在方法时真正的执行部分.

    返回值 : 方法在结束后, 产生的结果值, 值必须被返回值类型兼容.

    4. 方法的返回值是什么? 如何使用这个返回值?

    ​ 方法调用本身 :

    变量 = 方法名(实参列表);

    5. 什么是方法重载, 为什么要方法重载?

    ​ 同一个类中, 方法名相同, 参数不同. 参数不同体现在类型不同, 个数不同, 顺序不同.

    ​ 功能相近的一组方法, 便于使用者记忆. 调用简单.

    注意点 :

    1)方法在调用时实参是通过值传递给形参数据, 本质上就是一个赋值操作. 值传递更安全

    ​ 2)方法永远无法修改另一个方法的局部变量.

  • 相关阅读:
    【01】markdown语法
    H5系列之地理位置(必知必会)
    【07】像使用命令行一样使用 GitHub URL
    【11】把 GitHub 当 CMS 用
    【01】在 issue 中创建 list
    【06】GitHub WiKi
    【05】project board
    7.10-11 visudo、sudo
    7.7-9 chage、chpasswd、su
    7.1 useradd:创建用户
  • 原文地址:https://www.cnblogs.com/earnest-jie/p/12584464.html
Copyright © 2011-2022 走看看