美文网首页java基础
java基础-day03-变量

java基础-day03-变量

作者: 触手不可及 | 来源:发表于2021-06-24 13:40 被阅读0次

1. 变量定义

1.1 代码演示
1.2 变量定义错误总结和分析
1.2.1 float变量赋值操作问题
Demo1.java:4: 错误: 不兼容的类型: 从double转换到float可能会有损失
                float floatNumber = 3.14;
                                    ^
1 个错误

原因:
    计算机原则是为了保证数据的完整性,精度,对于空间的存储没有限制。这里所有的浮点数常量在计算机中都会认为是double类型。目前情况下 3.14是一个double类型的常量。但是这里需要将一个double类型的常量,赋值给float类型变量。
    这里数据存储空间不对称,需要约束当前3.14为float类型,做到【数据类型一致化】
    给3.14常量 ==> 3.14F。明确告知计算机这里3.14是一个float类型
    float floatNumber = 3.14; ==> float floatNumber = 3.14F;
1.2.2 long类型变量数据类型一致化要求
    开发中要求如果使用一个常量赋值给long类型的变量,需要在该常量之后加入一个大写的L。明确告知计算机,这里是一个long类型数据。
    long num = 10L;
1.2.3 字符类型变量操作赋值,必须使用字符本身,不得使用编码值
1.2.4 Java中规定变量未赋值,不得使用,避免没有必要的野值问题
int a;
System.out.println(a);
/*
Demo2.java:4: 错误: 可能尚未初始化变量a
                System.out.println(a);
                                   ^
1 个错误
*/
1.2.5 Java中规定,变量未定义不得使用【常见拼写错误】
// int num1 = 10;
System.out.println(nmu1);
/*
Demo2.java:7: 错误: 找不到符号
                System.out.println(nmu1);
                                   ^
  符号:   变量 nmu1
  位置: 类 Demo2
1 个错误
*/

2. 运算符

2.1 算术运算符
小学2年级数学知识点
    + - × ÷ ()
    注意事项:
        1. 优先级括号最高
        2. 先乘除后加减
        3. 最基本的原则是从左至右计算
        4. 除数不得为0

开发中使用的算术运算符:
    + - * /    %取余 = 赋值
    例如:
        针对整数操作
        5 ÷ 2 = 2 ...... 1
        10 ÷ 12 = 0 ...... 10
    
    = 赋值 是将赋值号右侧的数据,赋值给左侧的【变量】
操作变量和运算符注意事项:
    1. 变量里面保存的数据会随着代码的运行发生改变。
    2. 目前情况下变量里面保存的内容,有且只有在被赋值号赋值的情况下,才会发生改变
    3. 代码运行过程中,如果一个变量没有被赋值号赋值,在整体运行过程中不会发生改变
2.2 偷懒专用算术运算符
int num1 = 10;
int num2 = 20;

偷懒专用算术运算符
    += -= *= /= %=
    
    num1 = num1 + num2; ==> num1 += num2;
class Demo3 {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        
        num1 = num1 + num2; // num1 = 30 num2 = 20
        num1 = num1 * num2; // num1 = 600 num2 = 20
        num1 = num1 - num2; // num1 = 580 num2 = 20
        num1 = num1 / num2; // num1 = 29 num2 = 20
        num1 = num1 % num2; // num1 = 9 num2 = 20
        
        num1 *= num2; // num1 = 180 num2 = 20
        
        System.out.println(num1);
        System.out.println(num2);
    }
}
2.3 自增自减运算符 [逐步淘汰中...]
[个人建议]
    在代码中尽量减少自增自减运算符使用。
    1. 替代品 += 1 -= 1
    2. 解决方案 自增自减运算符单独成行
    Apple公司 iOS开发语言 Swift 已经淘汰自增自减运算符
    
[注意]
    自增自减运算符有且只能操作变量,不得操作常量!!!

++:
    操作的变量自增1
    自增运算符在变量之前,首先执行自增操作,再来将变量结果交给当前代码行
    自增运算符在变量之后,首先执行当前代码行,再讲变量数据进行自增操作
--:
    操作的变量自减1
    自减运算符在变量之前,首先执行自减操作,再来将变量结果交给当前代码行
    自减运算符在变量之后,首先执行当前代码行,再讲变量数据进行自减操作
2.4 自增自减运算符常见面试题
int num = 5;
int ret = num++ * ++num;

num == ?;
ret == ?;

/*
num = 7
ret = 35

如果你面试遇到这样的问题,请选择场外求助
    num++ * ++num;  
    num++ ==> 取 5 变 6 num值当前为6
    ++num ==> 变 7 取 7 
    5 * 7 ==> 35;
*/
int num = 5;
++(num++);

num = ?;
/*
num 
    编译错误
    1. 小括号里面的内容对外可以认为是一个整体,也就是一个常量!!!
    2. 自增自减运算符不得操作常量
*/
2.5. 关系运算符
数学中的关系运算符:
    > < ≥ ≤ ≠ =

开发中使用的关系运算符:
    > < >= <= != ==
    所有的关系运算符对外的数据结果都是 boolean类型 true or false
class Demo6 {
    public static void main(String[] args) {
        boolean ret = false;
        
        ret = 5 > 2;
        System.out.println("ret = " + ret);
        
        ret = 5 < 2;
        System.out.println("ret = " + ret);
        
        ret = 5 >= 5;
        System.out.println("ret = " + ret);
        
        ret = 5 <= 3;
        System.out.println("ret = " + ret);
        
        ret = 5 != 5;
        System.out.println("ret = " + ret);
        
        ret = 5 == 1;
        System.out.println("ret = " + ret);
    }
}
2.6 逻辑运算符
逻辑运算符对外结果也是boolean true or false

与
    &&
    同真为真,有假【即】假
或
    ||
    有真【即】真,同假为假
非
    !
    强牛 犟 取反
class Demo7 {
    public static void main(String[] args) {
        boolean ret = false;
        
        ret = 5 > 2 && 10 > 3;
        System.out.println("ret = " + ret);
        
        ret = 5 < 2 && 10 > 3;
        System.out.println("ret = " + ret);
        
        ret = 5 < 2 || 10 > 3;
        System.out.println("ret = " + ret);
        
        ret = 5 < 2 || 10 < 3;
        System.out.println("ret = " + ret);
        
        ret = !(5 == 5);
        System.out.println("ret = " + ret);
    }
}
2.7 duan路原则
int num = 10;
boolean ret = 10 < 5 && num++ > 5;

num = 10;
ret = false;
/*
逻辑与duan路原则:
    逻辑与操作情况下,如果表达式中出现了任何一个条件为false,从false条件之后,所有的内容不再运行。
    逻辑与表达式中只要有一个false,整个表达式结果已经明确。不需要进行运算。
*/

int num = 10;
boolean ret = 10 > 5 || ++num > 200;

num = 10;
ret = true;
/*
逻辑或duan路原则:
    逻辑或操作情况下,如果发现存在一个true条件,之后所有条件,都是无所谓的。
*/
2.8 练习题
/*
只写条件
*/
// 1. 写出判断一个int类型数据在1 ~ 100之间的条件
int num;
1 <= num <= 100; 错误!!!开发中不支持
num >= 1 && num <= 100; 正确写法;
    
// 2. 写出判断一个char类型字符在大写字母范围以内
// 任何时候,只要使用字符,有且只能使用字符本身。
char ch;
ch >= 'A' && ch <= 'Z';

// 3. 写出判断一个char类型字符在英文字母范围以内
char ch;
// 括号中的条件是一个整体
(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');

// 4. 写出判断一个char类型字符是否是数字字符
char ch;
ch >= '0' && ch <= '9';

// 5. 闰年条件
/*
能被4整除,但是不能被100整除,或者可以被400整除
*/
int year;
(year % 4 == 0 && year % 100 != 0) || year % 400 == 0;

3. 分支结构

3.1 常见结构
顺序结构
    从上至下,从左至右

分支结构
    条件过滤,判定

循环结构
    可以重复完成指定的代码。
    算法 排序,堆栈,队列,数据结构。
3.2 if分支
if (/* 条件 boolean true or false */) {
    // 语句体
}

/*
执行流程:
    代码执行到if分支结构,首先判断if之后的小括号内容是否为true,如果为true,执行语句体。如果为false,直接执行大括号之外的内容。
    语句体执行完毕,依然会执行大括号之外的内容。
*/
class Demo9 {
    public static void main(String[] args) {
        boolean singleDog = false;
        
        if (singleDog) {
            System.out.println("路见不平一声吼,你还没有女朋友");
        }
        
        System.out.println("代码执行完成...");
    }
}
3.3 if else 分支
if (/* 条件 boolean true or false */) {
    // true 语句体
} else {
    // false 语句体
}

/*
执行流程:
    代码执行到if else结构,首先判断if之后的条件,如果是true,执行true语句体,如果是false,执行false语句体。
    世界上最遥远的距离,是我在if里,你在else里
*/
/* if else 分支结构 */
class Demo10 {
    public static void main(String[] args) {
        boolean singleDog = false;
        
        if (singleDog) {
            System.out.println("两只黄鹂鸣翠柳,你依然没有女朋友");
        } else {
            System.out.println("注意身体");
        }
    }
}
3.4 if else if 分支
if (/* 匹配条件1 */) {
    // 处理方式1
} else if (/* 匹配条件2 */) {
    // 处理方式2
} else if (/* 匹配条件3 */) {
    // 处理方式3
} else {
    // 最终处理方式
}
/*
执行流程:
    当前程序运行到if else if结构,会使用条件匹配对应的if内容,如果匹配到对应的条件,执行对应的处理方式,如果没有任何一个条件匹配,执行else中的最终处理方式。
    不管执行的是哪一个处理方式,都会结束当前if else if分支结构

学生成绩:
    满分100分
    >= 90 优秀
    >= 80 良好
    >= 70 中等
    >= 60 及格
    < 60 差劲
*/
/*
学生成绩:
    满分100分
    >= 90 优秀
    >= 80 良好
    >= 70 中等
    >= 60 及格
    < 60 差劲
*/
class Demo11 {
    public static void main(String[] args) {
        int score = 59;
        
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("中等");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("差劲");
        }
    }
}
【补充知识点 Scanner操作使用 CV大法】
当前代码无法让普通用户使用,没有提供给用户一个输入数据的方式和方法。

1. 点技能
    导包,让当前代码可以操作使用一些其他的内容。
    在class之上
    import java.util.Scanner;

2. 创建Scanner变量,方便使用
    固定格式:
        Scanner sc = new Scanner(System.in);
    
3. 选择合理的方法,获取你想要从键盘上得到的数据
    获取int类型数据
        int类型变量 = sc.nextInt();
    获取float类型
        float类型变量 = sc.nextFloat();
    获取double类型
        double类型变量 = sc.nextDouble();
    获取char类型
        char类型变量 = sc.nextLine().charAt(0);
【补充知识点 用户输入数据合法性判断】
作为开发者,永远不要相信你的用户。
    需要对于用户输入的数据,进行当前程序合理性判定。
    例如学生成绩范围是在 0 <= score <= 100。用户提供的数据如果在该范围之外,就是一个非法数据。
/*
学生成绩:
    满分100分
    >= 90 优秀
    >= 80 良好
    >= 70 中等
    >= 60 及格
    < 60 差劲
*/
// 导包
import java.util.Scanner;

class Demo11 {
    public static void main(String[] args) {
        int score = 0;
        // 定义一个Scanner的变量,固定格式
        Scanner sc = new Scanner(System.in);
        
        // 提示用户输入
        System.out.println("亲,请输入学生的成绩哦~~~");
        // 从键盘上获取int类型数据
        score = sc.nextInt();
        
        // 用户输入数据合法性判断
        if (score > 100 || score < 0) {
            System.out.println("亲,输入的数据有错哦~~~");
            // System.exit(0);退出程序
            System.exit(0);
        }
        
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("中等");
        } else if (score >= 60) {
            System.out.println("及格");
        } else {
            System.out.println("差劲");
        }
    }
}

相关文章

  • java基础-day03-变量

    1. 变量定义 1.1 代码演示 1.2 变量定义错误总结和分析 1.2.1 float变量赋值操作问题 1.2....

  • Vue-基础-03-重点

    Vue-基础-day03-重点 01-基础-实例选项-计算属性-基本使用 场景:b依赖a b就是computed...

  • java

    语法基础1.1 java初体验(语法基础)1.2 变量和常量(语法基础)1.2 变量和常量(语法基础)1.4 流程...

  • java基础知识—面向对象和继承

    java基础知识—面向对象和继承 一、变量 静态变量 成员变量 局部变量 详情可见 浅谈Java变量。 二、修饰符...

  • Java面试宝典 1.13~1.31【2020.5 Beta版】

    Java面试宝典 1.13~1.31【2020.5 Beta版】 1.Java基础 1.13 静态变量与实例变量...

  • 九章算法课程顺序

    第1周 第一周: Java与算法基础入门 Java 语法基础 Introduction to Java 变量,二进...

  • java学习路径

    一、java基础知识 (30天) 1. 语言基础, java基础,环境变量 2. 语言基础, 进制转换 3. 语言...

  • java02

    java编程基础 目标: 常用开发工具 转义字符 Java语法格式规范 标识符,关键字,常量 Java变量 变量分...

  • Java基础——变量

    Java类的变量 局部变量在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法...

  • java基础-变量

    Java中基本类型一共4类,把这4类展开后共8种基本类型 定义变量的语法格式 数据类型转换 范围小的数据类型值(如...

网友评论

    本文标题:java基础-day03-变量

    本文链接:https://www.haomeiwen.com/subject/woiwyltx.html