Java数据类型

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 (表达式) {case1:// 当表达式等于值1时执行的代码块break;case2:// 当表达式等于值2时执行的代码块break;case3:// 当表达式等于值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循环多执行一次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/160298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4 个最常见的自动化测试挑战及应对措施

有人说&#xff1a;“杂乱无章的自动化只会带来更快的混乱。”不仅更快&#xff0c;而且是更严重、更大的混乱。如果使用得当&#xff0c;自动化可以成为测试团队中令人惊叹的生产力助推器和系统的质量增强器。自动化测试的关键是要正确运用&#xff0c;这是初始最困难的部分。…

大数据毕业设计选题推荐-热门旅游景点数据分析-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【马蹄集】—— 百度之星 2023

百度之星 2023 目录 BD202301 公园⭐BD202302 蛋糕划分⭐⭐⭐BD202303 第五维度⭐⭐ BD202301 公园⭐ 难度&#xff1a;钻石    时间限制&#xff1a;1秒    占用内存&#xff1a;64M 题目描述 今天是六一节&#xff0c;小度去公园玩&#xff0c;公园一共 N N N 个景点&am…

【C++】内联函数一看就懂?

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

JavaEE平台技术——预备知识(Web、Sevlet、Tomcat)

JavaEE平台技术——预备知识&#xff08;Web、Sevlet、Tomcat&#xff09; 1. Web基础知识2. Servlet3. Tomcat并发原理 1. Web基础知识 &#x1f192;&#x1f192;上个CSDN我们讲的是JavaEE的这个渊源&#xff0c;实际上讲了两个小时的历史课&#xff0c;给大家梳理了一下&a…

【Linux】:重定向和用户缓冲区

重定向和用户缓冲区 一.输出重定向1.现象2.系统调用接口 二.缓冲区1.引子2.刷新 三.回答引例 文件描述符对应匹配规则&#xff1a;从0下标开始&#xff0c;寻找最小的没有被使用的数组位置&#xff0c;它就是新的文件描述符(fd)。 一.输出重定向 1.现象 在这里我们向1号文件内…

【蓝桥杯省赛真题42】Scratch舞台特效 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch舞台特效 一、题目要求 编程实现 二、案例分析 1、角色分析

LVGL_多界面切换

LVGL_多界面切换 1、创建多个界面&#xff08;create_page1();&#xff09; 2、加载一个界面显示&#xff08;lv_scr_load(page1);&#xff09; 3、切换不同界面显示&#xff08;lv_scr_load_anim(page2, LV_SCR_LOAD_ANIM_OVER_LEFT, 300, 0, false);&#xff09; static lv_…

基于LDA主题+协同过滤+矩阵分解算法的智能电影推荐系统——机器学习算法应用(含python、JavaScript工程源码)+MovieLens数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境数据库 相关其它博客工程源代码下载其它资料下载 前言 前段时间&#xff0c;博主分享过关于一篇使用协同过滤算法进行智能电影推荐系统的博文《基于TensorFlowCNN协同过滤算法的智能电影推荐系统——…

map set

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2 set的使用 3.2 multiset 3.2.1 multiset的介绍 3.2.2 multiset的使用 3.3 map 3.3.1 map的介绍 3.3.2 map的使用 …

[ poi-表格导出 ] java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

解决报错&#xff1a; org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错描述&#xff1a; 表格导出本来使用正常&#xff0c;偶然就报了以上错误…

onnx 模型加载部署运行方式

1.通过文件路径的onnx模型加载方式: 在onnxruntime下面的主要函数:session Ort::Session(env, w_modelPath.c_str(), sessionOptions); 这里的文件路径是宽字节的&#xff0c;通过onnx文件路径直接加载模型。 在opencv下使用dnn加载onnx模型的主要函数: std::string model…