变量和数据类型

变量命名规则

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的

    常用的数据类型

    Java基础 - 图1| 数据类型 | 大小 | 取值范围 | | —- | —- | —- | | byte | 1字节 8位 | -128~127 | | int | 4字节 32位 | -2147483648(-231) ~ + 2147483647(231-1) | | short | 2字节 16位 | -32768 (-215) ~ + 32767 (+215-1) | | long | 8字节 64位 | -263 ~ + 263-1 | | float | 4字节 32位浮点数 | 1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38 | | double | 8字节 64位浮点数 | 4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308 |

变量的声明与引用

  1. public static void main(String[] args) {
  2. // 如何声明一个变量? --> 数据类型 变量名;
  3. int money;
  4. // 如何对变量赋值? --> 变量名 = 值;
  5. money = 100;
  6. // 那我们可不可以 声明一个变量 并赋值呢? 又该如何去写呢? --> 数据类型 变量名 = 值;
  7. int age = 20;
  8. }

我们来写一些简单的代码

  1. public static void main(String[] args) {
  2. /*
  3. * 如何去输出 语文课程中最高分数是:98.5?
  4. * 两种方法 第一种我们直接输出也就是
  5. * System.out.println("98.5");
  6. * 但是这样的话我们的数值是定死的没有办法更改的 所以我们要用到我们的数值类型, 那既然它是小数点后有一位 那也就是说 它是一个单精度浮点数
  7. * 那么我们的第二种方法出来里 我们来写一下
  8. */
  9. float score = 98.5f;
  10. // 在我们输出的时候 如果要联合变量输出,那么我们要去使用 + 这里我们所使用的 + 代表是字符串拼接 而不是我们数学中的加
  11. System.out.println("语文课程中最高分数是:"+score);
  12. // 我们来在练习一个案例 输出最高分学生的姓名 : 张三 同理我们还是使用 上面的方法来写
  13. String name = "张三";
  14. System.out.println("最高分学生的姓名:"+name);
  15. // 输出 最高分学生的性别:男
  16. char sex = '男';
  17. System.out.println("最高分学生的性别:"+sex);
  18. }

常量

  1. public static void main(String[] args) {
  2. /*
  3. 为什么要有常量 常量又有什么作用
  4. 常量 --> 代表定死的值 不会在使用中 去修改的量 意思是什么呢? 不能进行二次赋值
  5. 我们来举个例子 一栋房子在建好之后 一般我们是不是不会去添加个门或者窗户,如果要动也是在这个房子上进行修改 那常量也是这个样子 它不能进行二次赋值,如果要修改,那么只能对这个常量的值进行修改。
  6. 那么 如何去声明一个常量呢? final 数据类型 常量名 = 值; 这里要注意 常量名一般情况下,我们以大写来区分
  7. */
  8. final int NUM = 30; // 这就是常量 我们定义好常量后如果在进行二次赋值,那么会报错
  9. }

如何获取从控制台输入的内容

  1. public static void main(String[] args) {
  2. /*
  3. 那么此时我们有个问题,如果我们想从控制台拿到一个数值并输出该怎么办呢?
  4. 在我们java里面中,提供了一个类 这个类可以用来获取我们控制台输入的值 这个类叫 Scanner
  5. 那么我们该如何去导入这个包呢?
  6. 当我们想要去导入一个类的时候需要使用 import 关键字 我们来导入一下
  7. import java.util.Scanner;
  8. 我们导入成功后,该如何去使用呢?
  9. 我们需要去创建一个Scanner的对象 对象名 变量名 = new 对象;
  10. Scanner sc = new Scanner(System.in);
  11. */
  12. Scanner sc = new Scanner(System.in);
  13. // 如何使用 Scanner呢? 如果我们想要获取一个数字类型的输入 那么我们需要使用的是
  14. int num = sc.nextInt();
  15. // 如果我们想要获取一个字符串类型的输入 那么我们需要使用的是
  16. String sex = sc.next();
  17. // 同理 其他数据类型也是可以的 我们这里就不继续扩展了
  18. }

从控制台输入的案例

  1. public static void main(String[] args) {
  2. /*
  3. 案例1. 输入并显示 学生的成绩
  4. */
  5. Scanner sc = new Scanner(System.in);
  6. System.out.println("请输入 王五的java考试成绩");
  7. float score = sc.nextFloat();
  8. System.out.println("王五的java考试成绩为:"+score);
  9. }

类型转换

类型自动转换

  1. public static void main(String[] args) {
  2. // 那么自动类型转换是什么? 我们以一段代码来看
  3. double avg = 81.5;
  4. int add = 2;
  5. double avg1 = avg+add;
  6. System.out.println(avg1); // 输出为: 83.5
  7. // 我们用 double 类型去和一个Int类型相加后赋值给 一个double类型的数值 在运算过程中将int类型自动转换为了 double类型
  8. /*
  9. 那肯定有人会问?为什么会自动转换类型了呢?
  10. 自动转换需要满足两个条件 分别是
  11. 1. 两者数据类型需要兼容 整数和浮点数都属于数值类型 互相兼容
  12. 2. 目标类型大于源类型 例如 double 大于 int
  13. */
  14. }

强制类型转换

  1. public static void main(String[] args) {
  2. int a = (int)10.3;
  3. System.out.println(a); // 输出值为: 10
  4. double b = 10;
  5. System.out.println(b); // 输出值为: 10.0
  6. int c = (int)b;
  7. System.out.println(c); // 输出值为: 10
  8. // 当我们像让一个数值进行强制转换时 在变量或数值前 加上 (要强制转换为的类型)
  9. }

运算符

算术运算符

运算符 说明
+,-,*,/,% 加,减,乘,除,求余
++ 自增
自减
+= 加等 a +=10 —> a = a+10
-= 减等 a -=10 —> a = a - 10
*= 乘等 a =10 —> a = a 10
/= 除等 a /= 10 —> a = a / 10
%= 求余等 a %=10 —> a = a % 10

算术运算符案例

  1. public static void main(String[] args) {
  2. // 案例 求 四位数 的 千百十个位数相加
  3. int num = 1234;
  4. int g = num %10;
  5. int s = num /10 %10;
  6. int b = num /100 %10;
  7. int q = num /1000 %10;
  8. int su = q+b+s+g;
  9. System.out.println(su);
  10. }

关系运算符

运算符 说明
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

逻辑运算符

运算符 说明
&& 短路与 两边结果都为true 结果才是真 一边为false 结果都是false
|| 段落或 两边结果都为false 结果才是假 一边为true 就是true
! 非 !true 结果为假 !false 结果为真

条件运算符

  1. public static void main(String[] args) {
  2. int min;
  3. // 下面这种写法叫三元运算符 条件 ? 结果为true 返回这里的值 : 结果为false 返回这里的值
  4. min = 5 < 7 ? 5 : 7;
  5. System.out.println(min); // 我们输出min后返回的是 5
  6. }

运算符优先级

  • 单目运算符包括! ++ —,优先级别高
  • 优先级别最低的是赋值运算符
  • 可以通过()控制表达式的运算顺序,()优先级最高
  • 从右向左结合性的只有赋值运算符、三目运算符和单目运算符
  • 算术运算符 > 关系运算符 > 逻辑运算符

选择结构

if 分支

  1. public static void main(String[] args) {
  2. // if 分支 我们以案例来演示if分支
  3. // 当学生成绩大于60 为及格 大于 80为优秀 小于60 为不及格
  4. int score = 70;
  5. if (score>60 && score<80){
  6. System.out.println("及格");
  7. }else if (score>80){
  8. System.out.println("优秀");
  9. }else if (score<60){
  10. System.out.println("不及格");
  11. }
  12. }

switch选择结构

  1. public static void main(String[] args) {
  2. int a =1;
  3. switch (a){
  4. // 当case匹配不到时走default
  5. default:
  6. System.out.println("开始");
  7. break;
  8. case 1:
  9. System.out.println("hello");
  10. break;
  11. case 2:
  12. System.out.println("word");
  13. break;
  14. }
  15. }

案例

字符串比较案例

  1. public static void main(String[] args) {
  2. String sex = "男";
  3. // 字符串比较使用 equals()来比较
  4. if (sex.equals("女")){
  5. System.out.println("女性");
  6. }
  7. if (sex.equals("男")){
  8. System.out.println("男性");
  9. }
  10. }

猜数字案例

  1. public static void main(String[] args) {
  2. /*
  3. 我们补充一个生成随机数的方法 Math.random() 随机生成一个0~1之间的数字
  4. 我们使用它来做一个猜数字游戏
  5. */
  6. Scanner sc = new Scanner(System.in);
  7. int con = (int)(Math.random()*10);
  8. int sum = sc.nextInt();
  9. if (con == sum){
  10. System.out.println("猜对了");
  11. }else {
  12. System.out.println("猜错了");
  13. }
  14. }