一、变量
1、变量的定义与使用
- 变量就是内存中的存储空间,空间中存储着经常发生改变的数据
- 变量定义格式:
java
数据类型 变量名 = 数据值
- 使用时根据变量名使用
- 举例如下,上面是代码,下面是输出
2、变量的注意事项
- 变量名不允许重复定义
- 一条语句可以定义多个变量
- 变量在使用之前一定要进行赋值
- 变量的作用域范围
二、Debug 工具
1、Debug 介绍
- Debug:是供程序员使用的程序调试工具。它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
- Debug 调试,又被称为断点调试,断点其实是一个标记,告诉 Debug 从标记开始的地方开始查看。
2、Debug 加断点
- 选择要设置断点的代码行,在行号的区域后面单机鼠标左键。
3、Debug 运行
-
在代码区域右键 Debug/调试 开始执行
-
点击Step Over/步过这个箭头,也可以直接使用键盘按F8
-
在一步步进行的过程中,查看右边变量的变化过程
-
最后点击stop结束
-
结束之后点击Console窗口,查看程序打印的内容
4、删除断点
- 如果是多个断点,可以每一个再点击一次,也可以一次性全部删除,下面展示一下一次性全部删除的操作步骤
三、标识符
1、标识符概述
- 标识符:就是给类、方法、变量等起名字的符号
2、标识符命名规则
- 由数字、字母、下划线(_)和美元符($)组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
3、标识符命名规范
小驼峰命名法:
- 规范1:标识符是一个单词的时候,所有字符小写
- 范例1:feng
- 规范2:标识符由多个单词组成的时候,从第二个单词开始,首字母大写
- 范例2:fenghuai
大驼峰命名法:
- 规范1:标识符是一个单词的时候,首字母大写
- 范例1:Feng
- 规范2:标识符由多个单词组成的时候,每个单词的首字母大写
- 范例2:FengHuai
四、数据
1、计算机中的数据
ASCII 编码表:
- ASCII 编码表:即美国信息交换标准编码,规定了现代英语、数学字符和其他西欧字符对应的数字编号。
字符数据在计算机中的存储:
- 字符存的是 ASCII 码表中对应的数字的二进制形式
- 字符A对应的数字是65
- 字符a对应的数字是97
- 字符0对应的数字是48
图片和音视频等文件数据在计算机中的存储
- 依旧采用二进制进行存储
2、数据类型的分类
- 数据类型分为基本数据类型和引用数据类型,本文章主要讲解基本数据类型,引用数据类型在后面的文章中会进行详细讲解的,大家别着急~
基本数据类型
9行4列的表格
数据类型 | 关键字 | 取值范围 | 内存占用 |
---|---|---|---|
整数 | byte | -128~127 | 1 |
整数 | short | -32768~32767 | 2 |
整数 | int | -2147483648~2147483647 | 4 |
整数 | long | -9223372036854775808~9223372036854775807 | 8 |
浮点数 | float | 1.4E-45~3.4028235E38 | 4 |
浮点数 | double | 4.9E-324~1.7976931348623157E308 | 8 |
字符 | char | 0~65535 | 2 |
布尔值 | boolean | true、false | 1 |
- 说明:e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方
引用数据类型
- String类
五、数据类型
1、自动类型转换
- 当我们编程时时常存在着不同类型的变量需要与其它类型的变量同时进行计算,也存在着不同类型的变量要赋值给其他类型的变量,所以需要进行数据类型转换
- 自动类型转换是指类型范围小的变量,可以直接赋值给类型范围大的变量
- 下面是一些可以自动转换的类型,箭头是转换方向
2、表达式的自动类型转换
- 在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算
注意事项
- 表达式的最终结果类型由表达式中的最高类型决定
- 在表达式中,byte、short、char是直接转换成 int类型参与运算的
3、强制类型转换
- 类型范围大的数据或者变量,直接赋值给类型小的变量,会报错,由此我们需要进行强制类型转换
- 强制类型转换:强行将类型范围大的变量、数据赋值给类型范围小的变量
- 强制类型转换格式:
java
数据类型 变量1 = (数据类型) 变量1
注意事项
- 强制类型转换可能造成数据(丢失)溢出;
- 浮点型强转成整形,直接丢掉小数部分,丢掉整数部分返回
六、运算符
1、基本算数运算符
运算符
运算符 | 作用 | 说明 |
---|---|---|
+ | 加法 | 3 + 4 |
- | 减法 | 5 - 2 |
* | 乘法 | 2 * 3 |
/ | 除法 | 6 / 3,注意:在Java中两个整数相除结果还是整数 |
% | 取余 | 获取的是两个数据做除法的余数 |
2、"+"符号可做连接符
- "+"符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串,举例如下:
java
public class Variable {
public static void main(String[] args) {
String fenghuai = "风槐";
int shengao = 22;
System.out.println(fenghuai + shengao);
}
}
- 如代码所示,“风槐”+22输出结果是“槐22”
3、自增自减运算符
符号 | 作用 |
---|---|
自增:++ | 放在某个变量前面或者后面,对变量自身的值增加1 |
自减:-- | 放在某个变量前面或者后面,对变量自身的值增减1 |
注意
- ++ 、--只能操作变量,不能操作字面量
自增自减的使用注意事项
- ++、--如果不是单独使用(如放在表达式中、或者同时有其他操作),放在变量前后会存在明显区别。
- 放在变量的前面,再对变量的值进行+1、-1,先拿变量的值进行运算
java
int a = 10;
int b = ++a;//先加后用
- 放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
java
int a = 10;
int b = a++;//先用后加
自增自减案例
java
public static void main(String[] args) {
int c = 10;
int d = 5;
int e = c++ + ++c - --d - ++d + 1 + c--;
System.out.println(e);
System.out.println(c);
System.out.println(d);
}
- 大家先独立思考一下上面这段代码的输出结果,一定要思考,不思考看一遍一点都记不住,思考之后可以看一下下面的结果
4、基本赋值运算符
- "=",需要从右边往左看
java
int a = 10;//先看"="右边,把数据10赋值给左边的变量a存储
扩展赋值运算符
符号 | 用法 | 作用 | 底层代码形式 |
---|---|---|---|
+= | a += b | 加后赋值 | a = (a的类型)a + b; |
-= | a -= b | 减后赋值 | a = (a的类型)a - b; |
*= | a *= b | 乘后赋值 | a = (a的类型)a * b; |
/= | a /= b | 除后赋值 | a = (a的类型)a / b; |
%= | a %= b | 取余后赋值 | a = (a的类型)a % b; |
扩展赋值运算符的作用与特点
- +=可以实现数据的累加,把别人的数据加给自己
- 扩展的赋值运算符自带强制类型转换。
5、关系运算符
符号 | 例子 | 作用 | 结果 |
---|---|---|---|
> | a>b | 判断a是否大于b | 成立返回true、不成立返回false |
>= | a>=b | 判断a是否大于或者等于b | 成立返回true、不成立返回false |
< | a<b | 判断a是否小于b | 成立返回true、不成立返回false |
<= | a<=b | 判断a是否小于或者等于b | 成立返回true、不成立返回false |
== | a==b | 判断a是否等于b | 成立返回true、不成立返回false |
!= | !=b | 判断a是否不等于b | 成立返回true、不成立返回false |
- 判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true 或者 false。
注意
- 再 Java 中判断是否相等一定是"==",千万不要把"=="误写成"="
6、逻辑运算符
- 把多个条件放在一起运算,最终返回布尔类型的值:true、false
符号 | 叫法 | 例子 | 运算逻辑 |
---|---|---|---|
& | 逻辑与 | 2>1 & 3>2 | 多个条件必须是true,结果才是true;有一个是false,结果就是false |
| | 逻辑或 | 2>1 | 3>2 | 多个条件只要有一个是true,结果就是true;全部都是false,结果就是false |
! | 逻辑非 | !(2>1) | 取反:你真我假,你假我真。!true==false,!false==true |
^ | 逻辑异或 | 2>1 ^ 3>1 | 前后条件的结果相同,就直接返回false;前后条件的结果不同,就返回true |
符号 | 叫法 | 例子 | 运算逻辑 |
---|---|---|---|
&& | 短路与 | 2>10 && 3>2 | 判断结果与"&"一样,过程不同:左边为false,右边不计算,直接返回false;左边为true,右边计算,结果就是右边的计算结果 |
|| | 短路或 | 2>10 || 3>2 | 判断结果与"|"一样,过程不同:左边为true,右边不计算,直接返回true;左边为false,右边计算,结果就是右边的计算结果 |
注意
- 在 Java 中,"&"、"|":无论左边是 false 还是 true,右边都要执行。
- 由于&&、||运算效率更高、在开发中用的更多
7、三元运算符介绍
- 格式:
java
条件表达式 ? 值1:值2;
- 执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果false,返回值2。
8、运算符的优先级
优先级 | 运算符 | 类 | 结合性 |
---|---|---|---|
1 | () | 括号运算符 | 从左到右 |
1 | [] | 方括号运算符 | 从左到右 |
2 | !、+(正好)、-(负号) | 一元运算符 | 从右到左 |
2 | ~ | 位逻辑运算符 | 从右到左 |
2 | ++、-- | 递增与递减运算符 | 从右到左 |
3 | *、/、% | 算术运算符 | 从左到右 |
4 | +、- | 算术运算符 | 从左到右 |
5 | <<、>> | 位左移、右移运算符 | 从左到右 |
6 | <、<=、>、>= | 关系运算符 | 从左到右 |
7 | ==、!= | 关系运算符 | 从左到右 |
8 | &(位运算符号AND) | 位逻辑运算符 | 从左到右 |
9 | ^(位运算符号XOR) | 位逻辑运算符 | 从左到右 |
10 | |(位运算符号OR) | 位逻辑运算符 | 从左到右 |
11 | && | 逻辑运算符 | 从左到右 |
12 | || | 逻辑运算符 | 从左到右 |
13 | ?: | 条件运算符 | 从右到左 |
14 | = | 赋值运算符 | 从右到左 |
七、案例:Scanner 键盘输入
1、需求:
- 在程序中,提示客户通过键盘输入自己的姓名、年龄,并能在程序中收到这些数据。
2、解决:
- 不需要自己研发技术实现,Java 已经写好了实现程序,我们直接调用即可。
- API(Application Programming Interface:应用程序编程接口)
- Java 写好的程序,程序员可以直接拿来调用。
- Java 为自己写好的程序提供了相应的程序使用说明书(API文档)
- 下载 API文档,下载好后压缩到自己方便管理的地址,然后点击index.html用浏览器打开即可
3、使用 Scanner 接收用户键盘输入的数据
步骤:
- 导包:告诉程序去 JDK 的哪个包中找扫描器技术
- 抄代码:得到键盘扫描器对象
- 抄代码:等待接收用户输入数据
- 举例如下:
代码:
java
package basic.grammar;
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的名字:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("欢迎"+ age + "岁的" + name + "光临!");
}
}
注意:
- System、String 在JDK 中的 Java.lang 包下
- lang 包不需要我们导包,是默认的包