变量和数据类型
变量命名规则
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
常用的数据类型
| 数据类型 | 大小 | 取值范围 |
| —- | —- | —- |
| 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 |
变量的声明与引用
public static void main(String[] args) { // 如何声明一个变量? --> 数据类型 变量名; int money; // 如何对变量赋值? --> 变量名 = 值; money = 100; // 那我们可不可以 声明一个变量 并赋值呢? 又该如何去写呢? --> 数据类型 变量名 = 值; int age = 20;}
我们来写一些简单的代码
public static void main(String[] args) { /* * 如何去输出 语文课程中最高分数是:98.5? * 两种方法 第一种我们直接输出也就是 * System.out.println("98.5"); * 但是这样的话我们的数值是定死的没有办法更改的 所以我们要用到我们的数值类型, 那既然它是小数点后有一位 那也就是说 它是一个单精度浮点数 * 那么我们的第二种方法出来里 我们来写一下 */ float score = 98.5f; // 在我们输出的时候 如果要联合变量输出,那么我们要去使用 + 这里我们所使用的 + 代表是字符串拼接 而不是我们数学中的加 System.out.println("语文课程中最高分数是:"+score); // 我们来在练习一个案例 输出最高分学生的姓名 : 张三 同理我们还是使用 上面的方法来写 String name = "张三"; System.out.println("最高分学生的姓名:"+name); // 输出 最高分学生的性别:男 char sex = '男'; System.out.println("最高分学生的性别:"+sex);}
常量
public static void main(String[] args) { /* 为什么要有常量 常量又有什么作用 常量 --> 代表定死的值 不会在使用中 去修改的量 意思是什么呢? 不能进行二次赋值 我们来举个例子 一栋房子在建好之后 一般我们是不是不会去添加个门或者窗户,如果要动也是在这个房子上进行修改 那常量也是这个样子 它不能进行二次赋值,如果要修改,那么只能对这个常量的值进行修改。 那么 如何去声明一个常量呢? final 数据类型 常量名 = 值; 这里要注意 常量名一般情况下,我们以大写来区分 */ final int NUM = 30; // 这就是常量 我们定义好常量后如果在进行二次赋值,那么会报错 }
如何获取从控制台输入的内容
public static void main(String[] args) { /* 那么此时我们有个问题,如果我们想从控制台拿到一个数值并输出该怎么办呢? 在我们java里面中,提供了一个类 这个类可以用来获取我们控制台输入的值 这个类叫 Scanner 那么我们该如何去导入这个包呢? 当我们想要去导入一个类的时候需要使用 import 关键字 我们来导入一下 import java.util.Scanner; 我们导入成功后,该如何去使用呢? 我们需要去创建一个Scanner的对象 对象名 变量名 = new 对象; Scanner sc = new Scanner(System.in); */ Scanner sc = new Scanner(System.in); // 如何使用 Scanner呢? 如果我们想要获取一个数字类型的输入 那么我们需要使用的是 int num = sc.nextInt(); // 如果我们想要获取一个字符串类型的输入 那么我们需要使用的是 String sex = sc.next(); // 同理 其他数据类型也是可以的 我们这里就不继续扩展了}
从控制台输入的案例
public static void main(String[] args) { /* 案例1. 输入并显示 学生的成绩 */ Scanner sc = new Scanner(System.in); System.out.println("请输入 王五的java考试成绩"); float score = sc.nextFloat(); System.out.println("王五的java考试成绩为:"+score); }
类型转换
类型自动转换
public static void main(String[] args) { // 那么自动类型转换是什么? 我们以一段代码来看 double avg = 81.5; int add = 2; double avg1 = avg+add; System.out.println(avg1); // 输出为: 83.5 // 我们用 double 类型去和一个Int类型相加后赋值给 一个double类型的数值 在运算过程中将int类型自动转换为了 double类型 /* 那肯定有人会问?为什么会自动转换类型了呢? 自动转换需要满足两个条件 分别是 1. 两者数据类型需要兼容 整数和浮点数都属于数值类型 互相兼容 2. 目标类型大于源类型 例如 double 大于 int */}
强制类型转换
public static void main(String[] args) { int a = (int)10.3; System.out.println(a); // 输出值为: 10 double b = 10; System.out.println(b); // 输出值为: 10.0 int c = (int)b; System.out.println(c); // 输出值为: 10 // 当我们像让一个数值进行强制转换时 在变量或数值前 加上 (要强制转换为的类型)}
运算符
算术运算符
| 运算符 |
说明 |
| +,-,*,/,% |
加,减,乘,除,求余 |
| ++ |
自增 |
| — |
自减 |
| += |
加等 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 |
算术运算符案例
public static void main(String[] args) { // 案例 求 四位数 的 千百十个位数相加 int num = 1234; int g = num %10; int s = num /10 %10; int b = num /100 %10; int q = num /1000 %10; int su = q+b+s+g; System.out.println(su);}
关系运算符
| 运算符 |
说明 |
| == |
等于 |
| != |
不等于 |
| > |
大于 |
| < |
小于 |
| >= |
大于等于 |
| <= |
小于等于 |
逻辑运算符
| 运算符 |
说明 |
| && |
短路与 两边结果都为true 结果才是真 一边为false 结果都是false |
| || |
段落或 两边结果都为false 结果才是假 一边为true 就是true |
| ! |
非 !true 结果为假 !false 结果为真 |
条件运算符
public static void main(String[] args) { int min; // 下面这种写法叫三元运算符 条件 ? 结果为true 返回这里的值 : 结果为false 返回这里的值 min = 5 < 7 ? 5 : 7; System.out.println(min); // 我们输出min后返回的是 5 }
运算符优先级
- 单目运算符包括! ++ —,优先级别高
- 优先级别最低的是赋值运算符
- 可以通过()控制表达式的运算顺序,()优先级最高
- 从右向左结合性的只有赋值运算符、三目运算符和单目运算符
- 算术运算符 > 关系运算符 > 逻辑运算符
选择结构
if 分支
public static void main(String[] args) { // if 分支 我们以案例来演示if分支 // 当学生成绩大于60 为及格 大于 80为优秀 小于60 为不及格 int score = 70; if (score>60 && score<80){ System.out.println("及格"); }else if (score>80){ System.out.println("优秀"); }else if (score<60){ System.out.println("不及格"); } }
switch选择结构
public static void main(String[] args) { int a =1; switch (a){ // 当case匹配不到时走default default: System.out.println("开始"); break; case 1: System.out.println("hello"); break; case 2: System.out.println("word"); break; }}
案例
字符串比较案例
public static void main(String[] args) { String sex = "男"; // 字符串比较使用 equals()来比较 if (sex.equals("女")){ System.out.println("女性"); } if (sex.equals("男")){ System.out.println("男性"); }}
猜数字案例
public static void main(String[] args) { /* 我们补充一个生成随机数的方法 Math.random() 随机生成一个0~1之间的数字 我们使用它来做一个猜数字游戏 */ Scanner sc = new Scanner(System.in); int con = (int)(Math.random()*10); int sum = sc.nextInt(); if (con == sum){ System.out.println("猜对了"); }else { System.out.println("猜错了"); }}