1. 变量 (可以变化的数据) 常量(一旦被赋值不能被改变)
1. 使用步骤
a. 在内存中开辟一个空间
数据类型 自定义的名字(变量名、标识符);
double num;
b. 采用赋值运算符对变量进行赋值
变量名=数据;
num=23.5;
c. 改变变量的值
num=15;
d. 1/2可以二合一
double num1=23.5;
2. 注意的问题
a. 代码是从上往下运行的(一定要注意变量的使用位置)
b. 在同一个作用域内不能出现同名的两个变量名
c. 变量在使用时,变量名不能放在双引号内
2. 数据类型
1. 理解
数据:性别、名字、年龄、工资、成绩、照片、视频、音频
数据类型:字符、字符串、数字、文件
2. 数据类的分类
a. 基本数据类型 4类8个
整型(整数): 5 10 167 20000 4个
byte 字节 1个字节8位(bit) -128 ~ 127 -2^7 ~ 2^7-1
short 2个字节-2^15 ~ 2^15-1
int 4个字节-2^31 ~ 2^31-1 *
long 8个字节-2^63 ~ 2^63-1
浮点型(小数): 1.5 1.3 20.6 10000.0 2个
float 4个字节 单精度 在赋值时需要在数据的后面添加f或F
double 8个字节 双精度
字符型: 单个字符 这个字符必须被单引号包围 可以进行运算(每个字符都对应一个数值)
char 可变字节
布尔型: 主要存储的是 判断题的答案 对(成立、真) true 错(不成立、假) false
boolean 应用在条件结构和循环结构中
b. 引用数据类型
字符串:可以是0-n个字符 必须被双引号包围
String
c. 常用的数据类型
整型:int
浮点型:double
字符型:char
布尔型:boolean
字符串:String
3. 数据类型的转换
a. 自动转化 小-大
byte-->short-->int-->long-->float-->double
char-->int
b. 强制转化 大-小
语法: 较小的数据类型 变量名=(较小的数据类型)较大的变量;
案例:
int num2=100;
byte s=(byte)num2;
double d1=13.5;
int num3=(int)d1;
4. 标识符
类名
a. 字母+数字
b. 数字不能作为开头
c. 不能使用java中的关键字和保留字
d. 类名首字母大写(规范)
变量名
a. 字母+数字+符号(_和$)
b. 数字不能作为开头
c. 不能使用java中的关键字和保留字
d. 没有长度限制
e. 第一个单词全小写,从第二个单词开始首字母大写 (规范:驼峰式命名法)
5. 运算符
此类用于演示 运算符
1. 赋值运算符
=
2. 算术运算符
+ - * / % ++ --
+ 加法 连接符
连接符:只要有一段为字符串的话那么+为连接符
-
*
/ 整数运算中 得到的是商数
一旦有浮点型数据参与运算 得到的就是准确的答案
% 整数运算中 得到的是余数
++ 自身+1
-- 自身-1
3. 赋值运算符补充
+= -= *= /= %=
7. 关系运算符(返回的结果是布尔值)
1. > >= < <= == !=
2. 应用在什么地方?条件结构、循环结构
3. 关于String类型的主句判断是否相等时
String类型的数据有时可以用==判断,有时不可以 (到内存分布时在解释为什么)
a.equals(b);//任何情况下的字符串都可以判断是否相等
8. 逻辑运算符
1. 并且 或者 非
2.
并且 && 短路与 & 逻辑与 功能:只有两个条件都为真,总体才为真,否则总体为假
或者 || 短路或| 逻辑或功能:只有两个条件都为假,总体才为假,否则总体为真
非(取反) ! 功能:之前是true取反之后变为false,之前是false取反之后变为true
9. 三元运算符语法
布尔值?值1:值2; 判断?前面的布尔值是true还是false,如果是true的话就取值1,如果是false就取值2
1. 变量 (可以变化的数据) 常量(一旦被赋值不能被改变)此类用于演示 变量 1. 使用步骤a. 在内存中开辟一个空间 数据类型 自定义的名字(变量名、标识符); double num; b. 采用赋值运算符对变量进行赋值 变量名=数据;num=23.5;c. 改变变量的值num=15;d. 1/2可以二合一double num1=23.5;2. 注意的问题a. 代码是从上往下运行的(一定要注意变量的使用位置)b. 在同一个作用域内不能出现同名的两个变量名 c. 变量在使用时,变量名不能放在双引号内2. 数据类型1. 理解数据:性别、名字、年龄、工资、成绩、照片、视频、音频 数据类型:字符、字符串、数字、文件2. 数据类的分类a. 基本数据类型 4类8个整型(整数): 5 10 167 20000 4个byte 字节 1个字节8位(bit) -128 ~ 127 -2^7 ~ 2^7-1short 2个字节-2^15 ~ 2^15-1int 4个字节-2^31 ~ 2^31-1 * long 8个字节-2^63 ~ 2^63-1浮点型(小数): 1.5 1.3 20.6 10000.0 2个 float 4个字节 单精度 在赋值时需要在数据的后面添加f或Fdouble 8个字节 双精度字符型: 单个字符 这个字符必须被单引号包围 可以进行运算(每个字符都对应一个数值)char 可变字节布尔型: 主要存储的是 判断题的答案 对(成立、真) true 错(不成立、假) falseboolean 应用在条件结构和循环结构中b. 引用数据类型 字符串:可以是0-n个字符 必须被双引号包围String c. 常用的数据类型整型:int浮点型:double字符型:char布尔型:boolean字符串:String3. 数据类型的转换 a. 自动转化 小-大byte-->short-->int-->long-->float-->doublechar-->intb. 强制转化 大-小语法: 较小的数据类型 变量名=(较小的数据类型)较大的变量;案例:int num2=100;byte s=(byte)num2;double d1=13.5;int num3=(int)d1;4. 标识符 类名 a. 字母+数字b. 数字不能作为开头c. 不能使用java中的关键字和保留字d. 类名首字母大写(规范)变量名a. 字母+数字+符号(_和$)b. 数字不能作为开头c. 不能使用java中的关键字和保留字d. 没有长度限制e. 第一个单词全小写,从第二个单词开始首字母大写 (规范:驼峰式命名法)5. 运算符此类用于演示 运算符1. 赋值运算符= 2. 算术运算符+ - * / % ++ --+ 加法 连接符连接符:只要有一段为字符串的话那么+为连接符-*/ 整数运算中 得到的是商数 一旦有浮点型数据参与运算 得到的就是准确的答案% 整数运算中 得到的是余数++ 自身+1-- 自身-13. 赋值运算符补充+= -= *= /= %=6. 手动输入此类用于演示 手动输入a. 创建手动输入的工具Scanner input=new Scanner(System.in);b. 导包 位置:类的上方代码:import java.util.Scanner;c. 创建输入入口int num=input.nextInt(); int型数据的输入入口double d1=input.nextDouble(); double型数据的输入入口String name=input.next(); 字符串的输入入口7. 关系运算符(返回的结果是布尔值)1. > >= < <= == != 2. 应用在什么地方?条件结构、循环结构3. 关于String类型的主句判断是否相等时String类型的数据有时可以用==判断,有时不可以 (到内存分布时在解释为什么)a.equals(b);//任何情况下的字符串都可以判断是否相等 8. 逻辑运算符 1. 并且 或者 非 2. 并且 && 短路与 & 逻辑与 功能:只有两个条件都为真,总体才为真,否则总体为假或者 || 短路或| 逻辑或功能:只有两个条件都为假,总体才为假,否则总体为真非(取反) ! 功能:之前是true取反之后变为false,之前是false取反之后变为true 9. 三元运算符语法布尔值?值1:值2; 判断?前面的布尔值是true还是false,如果是true的话就取值1,如果是false就取值210. 位运算符 二进制和十进制之间的转换a. 十进制-->二进制 除2的操作,直到除到0为止,获得的余数倒序就是十进制对应的二进制byte 1一个字节 8位(二进制的位数)short 2 16int 4 32long 8位 64byte b=2;2 -> 10 3 -> 1115 -> 1111 13 -> 1101b. 二进制-->十进制 1011 --> 11 2^3*1 + 2^2*0 + 2^1*1 + 2^0*18+0+2+111001 --> 25 2^4*1 + 2^3*1 + 2^2*0 + 2^1*0 + 2^0*116+8+0+0+1 2532 16 8 4 2 1最高位是符号位 0正数 1负数原码:10001111 反码:11110000 原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如,用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码(原码逐位取反)的末位加1。
3. 位运算符 <<移位后,空位补0,被移除的高位丢弃,空缺位补0。 M << n 其实可以这么算 M << n = M * 2^n>>被移位的二进制最高位是0,右移后,空缺位补0; M >> n = M / 2^n 正数的原码 反码 补码一致最高位是1,空缺位补1。-15 1 0 0 0 1 1 1 1反码 1 1 1 1 0 0 0 0补码 1 1 1 1 0 0 0 1右移3位 1 1 1 1 1 1 1 0
补码 1 1 1 1 1 1 0 1反码 1 0 0 0 0 0 1 0>>2得出 -2>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。 若是正数 其实可以这么算 M << n = M * 2^n 负数则变成好大的正数&二进制位进行&运算,只有1&1时结果是1,否则是0;|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;^相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1~正数取反,各二进制码按补码(此时为正整数)各位取反(变成负整数),再补码 (负整数补码原码符号位不变,先将原码减去1,最后数值位各位取反)~150 0 0 0 1 1 1 1反码 ==0 0 0 0 1 1 1 1 补码 ==0 0 0 0 1 1 1 1取反 ~1 1 1 1 0 0 0 0----------------------------------补码 -11 1 1 0 1 1 1 1反码 ~1 0 0 1 0 0 0 0原码-2^4 = -16求负整数的补码,原码符号位不变,先将原码减去1,最后数值位各位取反。(但由于2进制的特殊性,通常先使数值位各位取反,最后整个数加1。)如下 结果一样~150 0 0 0 1 1 1 1反码 ==0 0 0 0 1 1 1 1 补码 ==0 0 0 0 1 1 1 1取反 ~1 1 1 1 0 0 0 0----------------------------------数值位取反1 0 0 0 1 1 1 1+1 1 0 0 1 0 0 0 0 == -16负数取反,各二进制码按补码各位取反,再补码(但是正数的补码与其原码相同)-34 1 0 1 0 0 0 1 0反码 1 1 0 1 1 1 0 1补码 1 1 0 1 1 1 1 0取反 0 0 1 0 0 0 0 1 ==33