Java数据类型
Java数据类型分为基本类型与引用类型两种,基本类型有8个,分别是byte、short、int、long、double、float、boolean、char,每一种基本数据类型都对应着一种包装类型;引用类型一般为数组、类、接口。
基本类型 | 二进制位数 | 基本类型的默认值 | 包装类型 |
---|
boolean | 1 | flase | Boolean | byte | 8 | 0 | Byte | char | 16 | ‘\u0000’ | Character | short | 16 | 0 | Short | int | 32 | 0 | Integer | long | 64 | 0 | Long | float | 32 | 0.0 | Float | double | 64 | 0.0 | Double |
基本数据类型间的自动转换
基本数据类型间的自动转换根据二进制位数的大小,可由小的自动转换为大的,可以逐级转换也可以跨级转换。char与short之间不可以自动转换
基本数据类型的强制转换
当需要从位数大的到位数小的转换时,是不能进行自动转换的,此时需要强制转换。 注意:
- 小数转整数时,会自动丢弃小数部分
- 强转是,如果长度大的数字超过长度小的类型的表示范围,则截取数字的高位字节,得到的结果无规律
表达式中数据类型的自动提升
- java中出现的整数数字,默认是int类型
- 表达式的返回类型以表达式中最大类型为准
- char,short,byte在表达式中都默认提升为int
byte b21 = 5;
byte b22 = (byte) (b21 + 8);
byte b23 = 8;
byte b24 = (byte) (b21 + b23);
直接量(字面量)
- 程序中出现的基本类型的数值、字符串、null都称为直接量
- false和true只能赋给boolean类型
- null只能赋给引用类型
Java运算符
算数运算符
-
+ :用于数值相加或者字符串的拼接 -
- 和 * :只能用于数值运算 -
/ : 整数相除抛弃小数部分,小数相除结果为小数 -
% :取模运算,即取余数; 整数取模时也不能除数为0,会报运行异常;
? 小数取模结果为小数;
? 小数取模,除数为0时,得到结果NaN(not a number)
-
++ 和 – :自增和自减运算 ? ++在后面,在语句结束后自增1; ? ++在前面,在语句前面自增1; ? --与++同理
赋值运算符
二进制运算,每位进行运算,有**&、|、~、^、<<、>>、>>>
三目运算符
(条件表达式)?结果1:结果2
如果表达式为真,返回结果1,如果表达式为假,返回结果2 可以进行多个三目运算符拼接
int age = 11;
System.out.println(age > 18 ? "成人" : age > 12 ? "青少年" : "儿童");
运算符的优先级
优先级 | 运算符 | 结合性 |
---|
1 | () [] | 从左到右 | 2 | ! +(正) -(负) ~ ++ – | 从右到左 | 3 | * / % | 从左到右 | 4 | +(加) -(减) | 从左到右 | 5 | << >> >>> | 从左到右 | 6 | < <= > >= | 从左到右 | 7 | == != | 从左到右 | 8 | & | 从左到右 | 9 | ^ | 从左到右 | 10 | | | 从左到右 | 11 | && | 从左到右 | 12 | || | 从左到右 | 13 | ?: | 从右到左 | 14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右到左 |
流程控制语句
条件语句
单分支
if(布尔表达式){
}
if(){
}else{
}
if(){
}else if(){
}
if(){
if(){
}
}else{
if(){
}
}
switch多选择结构
witch语句一般与brake联用,如果没有brake语句,则switch将会从满足条件的那一个一直往下执行
- 遇到brake,则跳出switch
- default分支可有可无,这是case分支都不满足时执行的语句
- 惯例讲default写在最后,但是switch语句中是顺序无关的
- switch表达式可以是int以下的基本类型或包装类型, 字符串,或者枚举(boolean不能用于 switch)。
public class Demo03 {
public static void main(String[] args) {
int i = 3;
switch (i){
case 1:
System.out.println("查询余额");
break;
case 2:
System.out.println("取款");
break;
case 3:
System.out.println("转账");
break;
case 4:
System.out.println("其它业务");
break;
default:
System.out.println("退出");
break;
}
}
}
循环语句
while(循环条件){
循环体;
}
do{
循环体;
}while(循环条件);
for(循环变量;循环条件;更新循环变量){
循环体;
}
for(数据类型 变量名 : 集合名){
}
数组
一组相同类型的数据的集合,实质是内存中的一块连续空间 数组中的保存的内容称为元素,每个元素有一个对应的下标,从0开始
数组的定义
基本类型或引用类型后面加上[]
如果数组没有初始化,则默认值都为null
未初始化的数组在内存中并没有分配空间,不能指定长度
数据类型[] 数组名;
数据类型 数组名[];
int[] list;
数组的初始化
-
直接赋值 int[] arrInt1 = {1, 3, 5, 7, 9};
String[] arrStr1 = {"aaa", "bbb", "ccc"};
-
通过new关键字,并赋值 int[] arrInt2 = new int[]{2, 4, 6, 8};
String[] arrStr2 = new String[]{"aaa", "bbb", "ccc"};
-
只初始化,不赋值,必须指定长度 int[] arrInt3 = new int[5];
System.out.println(arrInt3[0]);
boolean[] arrBoolean1 = new boolean[5];
数组的取值和赋值
int[] arrInt4 = new int[3];
arrInt4[0] = 1;
arrInt4[1] = 3;
arrInt4[2] = 5;
System.out.println(arrInt4[1]);
方法
一段独立的代码块,用于完成一件事情,可以被重复使用 方法能减少代码冗余,提高代码的重用性 方法三要素:返回值类型 方法名 参数列表
自定义方法
[访问修饰符] 返回值类型 方法名(参数类型 参数名,参数类型 参数名){
}
方法的调用
通过 类名/对象名.方法名() 调用
import java.util.Random;
public class Test2 {
void fun(int n){
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
System.out.println();
}
}
public static void main(String[] args) {
Test2 t = new Test2();
t.fun(5);
t.fun(7);
t.fun(10);
}
}
形式参数与实际参数
定义方法时的参数称为形式参数,简称形参 调用方法时传递的参数称为实际参数,简称实参
|