Java数据类型
文章目录
- Java数据类型
- 一、基本类型
- (1)整数类型
- (2)小数类型
- (3)真假类型
- (4)字符类型
- 二、数组类型
- 三、逻辑运算
- 1. 三元运算符
- 2.if语句
- 3.Switch语句
- 4. Switch语句case穿透
- 4.循环语句
- (1)for循环:
- (2)while循环:
- (3)do while 循环:
- (4)foreach循环:
- (5)for循环与while循环和do{}while()循环区别?
- (6)while循环与do{}while()循环区别?
一、基本类型
❑ 整数类型:有4种整型byte/short/int/long,分别占1、2、4、8个字节;
❑ 小数类型:有两种类型float/double,占用的内存空间分别是4和8字节;
❑ 字符类型:char,表示单个字符;
❑ 真假类型:boolean,表示真假。
(1)整数类型
整数类型和取值范围
但常量不能超过对应类型的表示范围
byte b=12;
short s=1212;
int i=8989;
long l=32323;
在给long类型赋值时,如果常量超过了int的表示范围,需要在常量后面加大写或小写字母L,即L或l,例如:
long a =3232343433L;
之所以需要加L或l,是因为数字常量默认为是int类型。
(2)小数类型
double表示的范围更大,精度更高
对于double,直接把熟悉的小数表示赋值给变量即可,例如:
double d=2222.22;
但对于float,需要在数字后面加大写字母F或小写字母f,例如:
float f =2222.22f;
这是由于小数常量默认是double类型。
(3)真假类型
真假(boolean)类型很简单,直接使用true或false赋值,分别表示真和假,例如:
boolean b=true;
b= false;
(4)字符类型
字符类型char用于表示一个字符,这个字符可以是中文字符,也可以是英文字符,char占用的内存空间是两个字节。赋值时把常量字符用单引号括起来,例如
char c='a';
char l='刘'
二、数组类型
基本类型的数组有3种赋值形式,如下所示:
1.int[] arr={1,2,3};
2.int[] arr=new int[]{1,2.3};
3.int[] arr=new int[3];arr[0]=1;arr[1]=2;arr[2]=3;
第1种和第2种都是预先知道数组的内容,而第3种是先分配长度,然后再给每个元素赋值。第3种形式中,即使没有给每个元素赋值,每个元素也都有一个默认值,这个默认值跟数组类型有关,数值类型的值为0, boolean为false, char为空字符。
三、逻辑运算
逻辑运算符具体有以下这些。
❑ 与(&):两个都为true才是true,只要有一个是false就是false;
❑ 或(|):只要有一个为true就是true,都是false才是false;
❑ 非(!):针对一个变量,true会变成false, false会变成true;
❑ 异或(^):两个相同为false,两个不相同为true;
❑ 短路与(&&):和&类似,不同之处稍后解释;
❑ 短路或(||):与|类似,不同之处稍后解释。
逻辑运算的大部分都是比较直观的,需要注意的是&和&&,以及|和||的区别。如果只是进行逻辑运算,它们也都是相同的,区别在于同时有其他操作的情况下,例如:
boolean a=true;
int b=0;
boolean flag=a|b++>0;
因为a为true,所以flag也为true,但b的结果为1,因为|后面的式子也会进行运算,即使只看a已经知道flag的结果,还是会进行后面的运算。而||则不同,如果最后一句的代码是:
boolean flag=a||b++>0;
则b的值还是0,因为||会“短路”,即在看到||前面部分就可以判定结果的情况下,忽略||后面的运算。
1. 三元运算符
三元运算符语法:
判断条件?表达式1:表达式2
三元运算符会得到一个结果,判断条件为真的时候就返回表达式1的值,否则就返回表达式2的值。三元运算符经常用于对某个变量赋值,例如求两个数的最大值:
int max= x>y?x:y
2.if语句
如果有多个判断条件,而且需要根据这些判断条件的组合执行某些操作,则可以使用if/else if/else,语法是:
if(条件1){代码块1
}else if(条件2){代码块2
}...
else if(条件n){代码块n
}else {代码块N+1
}
if/else if/else也比较简单,但可以表达复杂的条件执行逻辑,它逐个检查条件,条件1满足则执行代码块1,不满足则检查条件2, ……,最后如果没有条件满足,且有else语句,则执行else里面的代码。最后的else语句不是必需的,没有就什么都不执行。
3.Switch语句
switch (表达式) {case 值1:// 当表达式等于值1时执行的代码块break;case 值2:// 当表达式等于值2时执行的代码块break;case 值3:// 当表达式等于值3时执行的代码块break;// 可以添加更多的casedefault:// 当表达式不满足任何case时执行的代码块break;
}
在Switch语句中,一个表达式的值将与多个case进行比较,当匹配到第一个满足条件的case时,将执行与该case相关联的代码块。如果没有匹配的case,将执行default代码块。注意在每个case后面需要使用break语句来终止switch语句的执行,以防止执行不相关的代码块。
4. Switch语句case穿透
//键盘录入
import java.util.Scanner;public class Demo3Switch{/*需求:键盘录入星期数,输出工作日,休息日(1-5)工作日(6-7)休息日case穿透是如何产生的?注意:如果switch语句中,case省略了break语句,那么switch语句就会开始case穿透!!!现象:当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行直到看到break,或者将整体的case语句执行完毕,才会结束。应用场景:当发现switch语句中,多个case给出的语句体 出现了重复的,就可以考虑使用case穿透来优化代码!*/public static void main (String[] args){Scanner sc = new Scanner(System.in);System.out.println("请输入星期几");int week = sc.nextInt();// switch语句----//正常写法 导致问题:代码太臃肿!!!!!switch(week){case 1:System.out.println("工作日");break;case 2:System.out.println("工作日");break;case 3:System.out.println("工作日");break;case 4:System.out.println("工作日");break;case 5:System.out.println("工作日");break;case 6:System.out.println("休息日");break;case 7:System.out.println("休息日");break;default:System.out.println("您的输入有误");break;System.out.println("-------------------");//代码优化:case穿透switch(week){case 1:case 2:case 3:case 4:case 5:System.out.println("工作日");break;case 6:case 7:System.out.println("休息日");break;default:System.out.println("输入有误");break;}}}
}
4.循环语句
(1)for循环:
1.语法格式:
for(初始条件;判断条件;循环增量/减量){
需要被循环执行的java代码
}
例:
for(int i=1;i<=10;i++){System.out.println("i=="+i);}
(2)while循环:
1.语法格式:
while(判断条件){
需要被循环执行的java代码
}
2.执行逻辑:先执行判断条件,如果过判断条件为true,则执行需要被循环执行的java代码;如果过判断条件为false,则结束循环。
3.语法结构中没有,初始条件和循环增量/减量的控制条件。
4.初始条件—需要在格式之外自己定义
5.循环增量/减量—需要在循环体的最后一句设置
例: //输出1-10的数字
int i=1;
while(i<=10){System.out.println("i=="+i);i++;
}
(3)do while 循环:
1.语法格式:do{
需要被循环执行的java代码
}while(判断条件);
2.执行逻辑:首先执行do{}中需要被循环执行的java代码,然后在执行判断条件;如果判断条件为true,执行do{}中需要被循环执行的java代码;如果判断条件为false,结束循环。
3.语法结构中没有,初始条件和循环增量/减量的控制条件。
4.初始条件—需要在格式之外自己定义
5.循环增量/减量—需要在循环体的最后一句设置
例://计算1~10的整数和int sum=0;//保存和的变量int k=1;//初始条件do{sum= sum+k;k++;}while(k<=10);System.out.println("1~10的整合和=="+sum);
(4)foreach循环:
Java语言只 中的foreach循环 (也称为增强型for循环)是一种简化遍历数组或集合的语法结构。它提供了一种更简洁、更易读的方式来遍历集合中的元素,而无需使用传统的for循环和索引变量。本文将介绍Java中foreach循环的用法,并提供相应的源代码示例。
在Java中,foreach循环Q的语法结构如下
for (元素类型 元素变量 : 要遍历的数组或集合) {// 执行针对每个元素的操作
}
在这个语法结构中,元素类型是要遍历的数组或集合中元素的类型,而元素变量是用于引用当前遍历到的元素的变量名。在每次循环迭代时,素变量将自动被赋值为当前遍历到的元素,然后可以在循环体中使用。
(5)for循环与while循环和do{}while()循环区别?
for循环在语法格式中有初始条件和判断条件和循环增量/减量的控制条件定义,有了这三个条件的定义,for循环就有了明确的循环次数。
while循环和do{}while()循环只有判断条件,没有初始条件循环增量/减量的控制条件定义,所以while循环和do{}while()循环没有明确循环次数。我们可以不需要知道循环多少次,只要知道什么时候结束就可以
(6)while循环与do{}while()循环区别?
while循环是先判断后执行,do{}while()循是先执行后判断。
do{}while()循会比while循环多执行一次。