基础语法
-
字面值
整数值
小数值
字符值
必须用单引号包裹起来,单引号中间有且只能有一个字符 ',' 'a' '1' ' '
字符串值
用英文双引号包裹起来 例如: "三更草堂" "三" ""
布尔值
用来表示真或假 只有两种值 true和false
空值
代表空值,我们后面会使用到 null
-
存储单位
概念
在计算机内部,信息都是釆用二进制的形式进行存储、运算、处理和传输的。信息存储单位有位、字节等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种。
位(bit): 是计算机中数据的最小单位。
字节(Byte,B):计算机中数据的基本单位,每8位组成一个字节。
各单位的换算关系
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB=1024^2MB=1024^3KB=1024^4B=8*1024^4bit
-
数据类型
基本数据类型
类型名称 | 字节空间 | 取值范围 | |
整数型 | byte | 1 | -2^7 到 2^7 或者 -128 到 127 |
short | 2 | -2^15 到 2^15-1 | |
int | 4 | -2 ^31 到 2 ^31 -1 | |
long | 8 | -2^63 到 2^63 -1 | |
浮点型 | float | 4 | 单精度,对小数部分的精度要求不高 |
double | 8 | 双精度,精确的小数部分并操作值很大 | |
字符型 | char | 2 | 0 到 65535 |
布尔型 | boolean | 1 | 真 true 假 false |
引用数据类型
字符串string
-
变量
定义变量
定义并赋值
格式:数据类型 变量名 = 初始化值; int num = 1024;
光定义,不赋值
格式:数据类型 变量名; int num;//光定义一个int类型的变量num,但是还没有进行赋值
一次定义多个变量
数据类型 变量名1 = 值1,变量名2 = 值2; int a = 10, b = 20; // 定义int类型的变量a和b,中间使用逗号隔开
数据类型 变量名1,变量名2; int c,d; // 定义int类型的变量c和d,但是未赋值,中间使用逗号隔开
注意事项
1.变量有其作用范围,出了作用范围就不能使用了。它的作用范围是定义他的那行代码所在的大括号内。
2.在同一个大括号中定义的变量名不能重复。
-
数据类型转换
-
自动类型转换
long l = 1024; // int -> long int:-2^31到 2^31-1 long:-2^63到 2^63-1
double d = 10; // int ->double int整数 double双精度
强制类型转换
格式
目标数据类型 变量名 = (目标数据类型)值或者变量;
int a = (int)3.14; double->int
float f = (float)3.14; double->float
int b = (int)10000L; long->int
注意事项
编译器的优化: byte ,short,char 类型的变量赋常量值的时候 在编译的时候,如果值在对应类型范围内,就不会报错,如果不在就会报错
byte,short,char变量参与运算的时候结果会提升为int类型,但是如果还有其他数据范围更大的数据参与运算,则会转化为该类型。
byte b = 10; int b=10; byte b = 10;
byte b2 = 20; int b2=20; byte b2 = 20;
byte sum = b+b2; int sum =b+b2; byte sum =(byte) (b+b2);
键盘录入
//导包
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
int x = sc.nextInt();
//输出数据
System.out.println(x); } }
运算符
算术运算符
+ - * % 取余 / 除
int a =10/3 结果为三
取余运算符的应用场景
判断奇偶数 一个数对2取余,结果如果为0说明是偶数,不是0说明是奇数
获取一个数的个位 一个数对10取余的结果就是个位数.123%10
获取一个数的十位 一个数/10再对10取余的结果就是个位数.123/10%10
获取一个数的百位 一个数/100再对10取余的结果就是个位数.1235/100%10
判断一个数是否是某个数的倍数 num%5取余 结果是0 说明是5的倍数
赋值运算符
= a=10
+= 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)
自增自减运算符
++ a++ a=(a的数据类型) (a+1)
-- a-- a=(a的数据类型) (a-1)
比较运算符
== 比较左右两边是否相等,结果是布尔类型的
< 比较左边是否小于右边,结果是布尔类型
> 比较左边是否大于右边,结果是布尔类型
<= 比较左边是否小于等于右边,结果是布尔类型
>= 比较左边是否大于等于右边,结果是布尔类型
!= 比较左右两边是否不相等,如果不相等结果是true,否则是false
逻辑运算符
|逻辑或
&逻辑与
^逻辑异或 布尔表达式1 ^ 布尔表达式2 判断左右两边是否不同 不同为true 相同为FALSE
&& 短路与
|| 短路或
三元运算符
格式
布尔表达式?表达式1:表达式2;
执行流程
先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1的值,否则就是表达式2的值。因为肯定会有一个结果。所以我们在使用的时候需要把这个结果使用(用变量保存,打印等)起来。不然就没有意义。
流程控制语句
选择结构
if
if(条件){符合条件的执行语句;
}else{不符合条件的执行语句}
Switch
swich(表达式){case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
break; }
循环结构
for
for(初始化语句;布尔表达式(判断表达式);步进语句){
循环体;}
while
while(条件){循环体}(如果不符合条件跳出循环)
do while
do{ 循环体; }while(布尔表达式);
循环次数已知一般用for循环
循环次数未知一般用while循环
do while 循环一般不用
循环控制语句
break
在循环过程中,碰到break 整个循环 就直接结束了
break只能出现在循环中或者switch中
continue
如果在循环过程中碰到了continue,则 跳过本次循环 , 继续下次循环
continue只能出现在循环中