------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1常量:
常量概述
在程序执行的过程中其值不可以发生改变
常量的分类:
字面值常量
字符串常量 用双引号括起来的内容
"hello" "你好"
整数常量 所有整数
111 123 -128
小数常量 所有小数
3.5 -2.2
字符常量 用单引号括起来的内容
'a' 'b' 'A' '0'
布尔常量
true(真) false(假)
空常量 null(数组部分讲解)
自定义常量
2进制: 就是进位制,是人们规定的一种进位方法
进制分为:二进制 八进制 十进制 十六进制
其他进制转换到十进制:
规则: 系数 * 基数^权次幂
十进制转换到其他进制:
规则: 除基取余,除到商为0结束,然后余数倒过来取
快速的进制转换法(8421):
1 1 1 1 1 1 1 1
2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128 64 32 16 8 4 2 1
原码反码补码:
把一个二进制数,分成分成符号位,和数值位
原码:
正数: 符号位0, 其他为数值位
负数: 符号位1, 其他为数值位
反码:
正数: 和原码一样
负数: 符号位1, 数值位按位取反
补码:
正数: 和原码一样
负数: 反码+1
3变量:
变量概述
在程序执行的过程中,在某个范围内其值可以发生改变的量
定义变量的格式:
方式1: 数据类型 变量名 = 初始化值;
方式2: 数据类型 变量名;
变量名 = 初始化值;
数据类型:
基本数据类型:
整数类型:
byte 1(字节) -128---127
short 2(字节)
int 4(字节)
long 8(字节)
浮点类型:
float 4(字节)
double 8
字符类型:
char 2 0---65535
布尔类型:
boolean 1
Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如:
int i1 = 600; //正确 long l1 = 88888888888L; //必须加l否则会出错
与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
Java 浮点类型常量有两种表示形式
十进制数形式,如: 3.14 314.0
科学记数法形式,如 3.14e2 3.14*10^2
Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F ,如:
double d = 12345.6; //正确 float f = 12.3f; //必须加f否则会出错
char 型数据用来表示通常意义上的“字符”
字符常量为用单引号括起来的单个字符,例如:char ch1= 'a'; char ch2='中';
Java 字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。注:Unicode是全球语言统一编码
boolean 类型适于逻辑运算,一般用于程序流程控制 。
boolean 类型数据只允许取值 true 或 false ,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
注意:
整数默认使用int类型
小数默认使用的 double 类型
引用数据类型:
类 class
接口 interface
数组 []
使用变量的注意事项
1: 作用域
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域
相同的作用域中不能定义两个同名变量
2: 初始化值
没有初始化值不能直接使用
3: 在一行上建议只定义一个变量
int a,b,c,d,e; 不建议
int a;//建议
int b;//建议
数据类型转换
隐式转换: 小的数据类型 向 大的数据类型转换
这个转换的操作会默认自己完成,不需要我们处理
byte,short,char—int—long—float—double
byte,short,char相互之间不转换,他们参与运算首先转换为int类型
强制转换:大的数据类型 向 小的数据类型转换
手动完成
格式:目标类型 变量名=(目标类型)(被转换的数据);
例如: byte b = 3;
b = (byte)(b + 3);
一般建议,最好不要随意使用强制类型转换,容易造成数据精度的损失。
(1)容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
(2)有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。
Unicode编码中的每个字符占用两个字节。所以,Java中的字符可以存储一个中文汉字
字符和字符串参与运算:
字符串和其他类型的数据 使用 + 号运算的时候,
会把字符串与其他类型的数据相连接,返回连接后的新字符串
4:算术运算符:
算术运算符(+、— 、* 、/ 、%,++,--)
/ 和 % 的区别?
/ 除法操作, 结果是商
% 取余数操作,结果是余数
++,--运算符:
++,--运算符在操作数的前面, 先操作数自增1或者自减1, 然后再参与赋值运算
例如: a = ++b;
++,--运算符在操作数的后面, 先参与赋值运算,然后操作数自增1或者自减1
例如: a = b++;
赋值运算符 := , +=, -=, *=, /=, %=
1: +=,-=等这样的操作符自带一个强制转换功能
2: 赋值运算符的左边必须是一个变量
比较运算符:(>、>=、<、<=、!=,==)
1: = 与 == 的区别?
= : 赋值运算符, 把右边的结果 赋值给左边变量
==: 比较运算符, 判断左右两边的数据是否相等,返回的结果是boolean 类型(true\false)
逻辑运算符:&,|,^,!,&&,||
& 逻辑与运算符 : 有false则假
| 逻辑或运算符 : 有true则真
^ 逻辑异或运算符:相同则false,不同则true
! 逻辑非运算符: true变假, false变真
&& 和 || 的使用:
他们的使用的结果与 (& | )的结果相同
它们具备短路功能(如果左边条件能确定结果,不执行右边的判断)
位运算符:&,|,^,~,<<,>>,>>>
& 位与运算符: 有0则0
| 位或运算符: 有1则1
^ 位异或运算符:相同则0,不同则1
~ 位反码运算符:按位取反(包含符号位)
<< 左移运算符: 空位补0,被移除的高位丢弃
>> 右移运算符: 被移位的二进制最高位是0,右移后,空缺位补0;
最高位是1,最高位补1。
>>> 无符号右移运算符:被移位二进制最高位无论是0或者是1,空缺位都用0补。
三元运算符[三目运算符]
格式:
(条件表达式)?表达式1:表达式2;
执行流程:
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
注意: 条件表达式最终的运算结果是 boolean 类型 (true,false)
键盘录入:
导包(位置放到class定义的上面)
import java.util.Scanner;
创建对象(写在main方法的里面)
Scanner sc = new Scanner(System.in);
接收数据
int x = sc.nextInt();
流程控制语句: 指定程序的执行方式
流程控制语句分类
顺序结构
选择结构
if(重点)
switch(理解)
循环结构
(后面学习)
选择结构if语句:
if语句第一种格式:
if(条件表达式) {
语句体
}
执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
if语句第二种格式:
if(条件表达式) {
语句体1;
}else {
语句体2;
}
执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
if语句第三种格式:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:
哪一个关系表达式成立,执行对应的语句体,然后结束if选择结构
要是所有的关系表达式都不成立,执行最后的else中的语句体
注意事项:
关系表达式无论简单还是复杂,结果必须是boolean类型
if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
(了解)if语句结构与三目运算符的区别?
if(3>4){
SOP(3);
} else {
SOP(4);
}
向上面这种输出语句的时候,不能用三目运算符改写
下面的方式可以使用三目运算符改写
int max;
if(3<4) {
max = 4;
} else {
max = 3;
}
选择结构switch语句
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
格式解释
switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多条语句
break表示中断,结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
default可以省略吗?
可以省略。一般不建议。除非判断的值是固定的。
break可以省略吗?
可以省略,一般不建议。否则结果可能不是你想要的
default的位置一定要在最后吗?
可以出现在switch语句任意位置。
switch语句的结束条件
遇到break
执行到程序的末尾
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断