Java数据类型,你不想不学会都不行~

——每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)

思维导图

数据类型.xmind

一.整数类型

1.什么是整数类型

        —— 用int、short、byte、long存储的整数值就是整数类型

2.整数的类型

类型          所占的字节数         数值范围

byte                 1字节               -128 ~ 127

short                2字节          -2^15 ~ 2^15-1(-32768 ~ 32767)

int                    4字节              -2^31 ~ 2^31-1

long                 8字节              -2^63 ~ 2^63-1

3.一个小case快速了解整数类型

public class Test {public static void main(String[] args) {//整数的类型byte a = 10;//占用1个字节(byte)的内存空间用于存储10short b = 20;//占用2个字节(byte)的内存空间用于存储20int c = 30;//占用4个字节(byte)的内存空间用于存储30long d = 40;//占用8个字节(byte)的内存空间用于存储40//输出值System.out.println(a);//10System.out.println(b);//20System.out.println(c);//30System.out.println(d);//40}
}

4.整型的细节讨论

1)Java各整数类型有固定的数值范围和字节数,不会受操作系统(OS)的影响,这样就保证了Java的可移植性

2)Java整型的常量值默认为int类型,若是声明了long型的变量的数值,则数值后面可加上l / L,表明这是一个long型的数值

public class Test {public static void main(String[] args) {//Java整型的常量值默认为int类型,若是声明了long型的变量的数值,则数值后面可加上l / L//long num = 10;//10默认为int类型,若是想要10为long型则在后面加l/Llong num = 10L;System.out.println(num);}
}

3)若是整型的高类型想要转化到低类型,则需要强制类型转换

强制类型转换格式:低数据类型变量 = (低数据类型) 高数据类型的变量

public class Test {public static void main(String[] args) {//若是整型的高类型想要转化到低类型,则需要强制类型转换long num = 10;byte n = 10;//n = num;//错误,不能直接把long型的值转换为byte的值n = (byte) num;//进行强制类型转换}
}

4)各数据类型给该数据类型的变量进行赋值的时候,赋的值不能超过该数据类型的数值范围

public class Test {public static void main(String[] args) {//各数据类型给该数据类型的变量进行赋值的时候,赋的值不能超过该数据类型的数值范围//byte = 100;//错误,超过了byte的数值范围//short b = 300010;//错误,超过了short的数值范围//int c = 2111100000000000;//错误,超过了int的数值范围}
}

二. 浮点类型

1.什么是浮点型

        —— 用float、double存储的数值就是浮点类型

2.浮点数的类型

类型         所占的字节数         数值范围

float                 4字节         -3.403e38 ~ 3.403e38

double             8字节         -1.798e308 ~ 1.798e308

注:浮点数在机器中存放的形式:浮点数 = 符号位 + 指数位 + 尾数位

3.一个小case快速了解浮点型

public class Test {public static void main(String[] args) {float data = 1.314f;//data申请了4个字节的空间存储1.314double num = 13.14;//data申请了8个字节的空间存储13.14//输出System.out.println(data);//1.314System.out.println(num);//13.14}
}

4.浮点数的细节讨论

1)Java浮点数的类型有固定的数值范围和字节数,不受具体操作系统的影响

2)Java中浮点型常量默认是double类型,若声明了float型,使用数值给float型变量赋值的时候,数据值需加上f / F

3)通常情况下,应使用double类型,因为它的精度更高

public class Test {public static void main(String[] args) {//Java中浮点型常量默认是double类型,若声明了float型,使用数值给float型变量赋值的时候,数据值需加上f / Ffloat num = 10.13f;//10.13默认是double类型,想要10.13变成float型,需要在10.13后面加f / Fdouble data = 13.14;//输出值System.out.println(num);//10.13System.out.println(data);//13.14}
}

4)浮点型常量有两种表示形式

i.十进制数形式:5.12、6.123、7.1345

ii.科学计数法形式:4.12e3 (4.12*10^3)、3.145e-5 (3.145*10^-5)

public class Test {public static void main(String[] args) {//十进制数形式:5.12、6.123、7.1345float num1 = 5.12f;double num2 = 6.123;//科学计数法形式:4.12e3 (4.12*10^3)、3.145e-5 (3.145*10^-5)float data1 = 4.12e3f;double data2 = 3.145e-5;}
}

5)浮点数不要轻易做比较,若要比较,则需要使用Math.abs()进行比较【浮点数的比较方式】

public class Test {public static void main(String[] args) {double num1 = 2.7;double num2 = 8.1 / 3;System.out.println(num1 == num2);//false//使用Math.abs()比较if (Math.abs(num1 - num2) < 0.000001) {System.out.println(true);//true}}
}

三.字符类型

1.什么是字符型

        —— 用char类型储存单个字符的值就是字符型,字符要用' '包含起来

2.一个小case快速了解字符型

public class Test {public static void main(String[] args) {char ch1 = '我';//ch1使用了两个字节的内存空间储存‘我’char ch2 = 'l';//ch2使用了两个字节的内存空间储存‘l’char ch3 = 'o';char ch4 = 'v';char ch5 = 'e';char ch6 = '中';char ch7 = '国';//输出System.out.println("" + ch1 + ch2 + ch3 + ch4 + ch5 + ch6 + ch7);//我love中国}
}

3.字符型的细节讨论

1)字符型常量是使用单引号' '包括起来的单个字符

2)Java中允许使用转义字符 '\' 来将后面跟着的字符转变了特殊的字符

public class Test {public static void main(String[] args) {//字符型常量是使用单引号(' ')包括起来的单个字符char ch = 'a';char c = 'b';//Java中允许使用转义字符 '\' 来将后面跟着的字符转变了特殊的字符char n1 = '\n';//换行char n2 = '\b';//退格char n3 = '\r';//回车char n4 = '\t';//制表符}
}

3)在Java中,char的本质是一个整数,在输出char对应变量的值时,得到的结果是unicode码对应的字符

public class Test {public static void main(String[] args) {//在Java中,char的本质是一个整数,在输出char对应变量的值时,得到的结果是unicode码对应的字符char ch1 = 'a';char ch2 = '中';char ch3 = '国';char ch4 = 'h';//输出对应的unicode码对应的值System.out.println((int) ch1);//97System.out.println((int) ch2);//20013System.out.println((int) ch3);//22269System.out.println((int) ch4);//104}
}

4)可以直接给char类型赋在其数值范围内的整数值,在输出的时候,会按照对应的unicode字符输出

5)char类型是可以进行运算的,相当于整数,因为它们有对应的unicode码

public class Test {public static void main(String[] args) {//可以直接给char类型赋在其数值范围内的整数值,在输出的时候,会按照对应的unicode字符输出//char ch1 = 12223344;//错误,赋的值超过了char类型的数值范围char ch1 = 1234;char ch2 = 105;System.out.println(ch1);//ӒSystem.out.println(ch2);//i//char类型是可以进行运算的,相当于整数,因为它们有对应的unicode码char n1 = 'a' + 'n';char n2 = 'b' + 'c';System.out.println(n1);//ÏSystem.out.println(n2);//Å}
}

四.布尔类型

1.什么是布尔类型

        ——只有true(真)和false(假)两个值的类型叫做布尔类型,布尔类型只能取true和false两个值

2.一个小case快速了解布尔类型

public class Test {public static void main(String[] args) {boolean b1 = false;//boolean至占用一个字节boolean b2 = true;//boolean b3 = null;//错误,不能取除了true和false外的其他值//输出System.out.println(b1);//falseSystem.out.println(b2);//true}
}

3. 

3.一个小case快速了解自动类型转换

public class Test {public static void main(String[] args) {char ch = 'a';int num = 10;num = ch;//发生了自动类型转换,把char类型转换到了int类型float data1 = 3.14159f;double data2 = 3.123;data2 = data1;//发生了自动类型转换,把float类型转换到了double类型data2 = num;//把int型提升到double型//输出System.out.println(num);//97System.out.println(data2);//97.0}
}

4.自动类型转换的细节讨论

1)有多种数据类型的数据进行混合运算时,系统首先自动将所有数据转换成精度最高的数据类型,然后再进行运算

public class Test {public static void main(String[] args) {//有多种数据类型的数据进行混合运算时,系统首先自动将所有数据转换成精度最高的数据类型,然后再进行运算char ch = 'a';byte num1 = 10;short num2 = 100;int num3 = 1000;long num4 = ch + num1 + num2 + num3;//char,byte,short,int类型进行运算,将所有数据转换为int类型进行运算//输出System.out.println(num4);//1207int data1 = 10;float data2 = 1.314f;double data = data1 + data2 + 1.3;//先将所有的数据转换为double类型,再进行运算//输出System.out.println(data);//12.614000129699708}
}

2)把精度大的数据类型赋给精度小的数据类型时,会报错

public class Test {public static void main(String[] args) {//把精度大的数据类型赋给精度小的数据类型时,会报错double num1 = 1.13;//float num2 = 12.13;//错误,12.13默认是double类型,但num2是float类型,不能从double转到floatint data = 0;//char ch = data;//data是int类型,不能直接从int类型转换到char型}
}

3)byte、short和char类型之间不会相互自动转换

public class Test {public static void main(String[] args) {byte b1 = 10;short b2 = 12;char ch = 'a';//byte、short和char类型之间不会相互自动转换//ch = b1;//错误//ch = b2;//错误//b1 = ch;//错误//b2 = ch;错误}
}

4)byte,short,char三者之间可以互相运算,但是再运算时需要转换为int类型进行计算

public class Test {public static void main(String[] args) {byte b = 12;short num = 120;char ch = 'a';byte,short,char三者之间可以互相运算,但是再运算时需要转换为int类型进行计算int data = b + num + ch;System.out.println(data);//229}
}

5)boolean类型不与任何类型进行运算

public class Test {public static void main(String[] args) {boolean res = true;//boolean类型不与任何类型进行运算//int ret = res + 10;//错误//double sum = 1.314 + res;//错误//char sum1 = 'a' + res;//错误}
}

6)自动提升规则:表达式的结果自动提升为操作数中最大的类型

5.2 强制类型转换

1.什么是强制类型转换

——强制类型转换是自动类型转换的逆过程,将精度大的数据类型转换为精度小的数据类型,在使用时要加上强制类型转换符(),但是可能会导致精度丢失或精度溢出

2.一个小case了解强制类型转换

public class Test {public static void main(String[] args) {//强制类型转换int num = (int) 1.3;//把double类型的值1.3强制转换为int类型int data1 = 67;byte data2 = (byte) data1;//把int类型data1转换为byte类型char ch = (char) data1;//把int类型的data1转换为char类型//输出System.out.println(num);//1System.out.println(data2);//67System.out.println(ch);//'C'}
}

3.强制数据类型的细节讨论

1)当高精度的数据类型变成低精度的数据类型时,就需要使用强制类型转换

2)强制类型转换只会对离()最近的操作数有效,若是想要提高所有的操作数,则需要使用小括号()提高优先级

public class Test {public static void main(String[] args) {//当高精度的数据类型变成低精度的数据类型时,就需要使用强制类型转换//使double类型变成int类型double num1 = 13.14;int num2 = 10;num2 = (int) num1;//使double转向了intSystem.out.println(num2);//13//强制类型转换只会对离()最近的操作数有效,若是想要提高所有的操作数,则需要使用小括号()提高优先级//int data = (int)1.3 + 2.3 + 3.3;//错误,(int)只对1.3起作用,而2.3,3.3还是double类型//使用()提升优先级int data = (int) (1.3 + 2.3 + 3.3);System.out.println(data);//6}
}

3)char类型可以保存int的常量值,但不能保存int的变量值(需要使用强制类型转换)

public class Test {public static void main(String[] args) {//char类型可以保存int的常量值,但不能保存int的变量值(需要使用强制类型转换)char ch = 120;//可以直接使用int的常量值int num = 100;//ch = num;//不能直接保存int的变量值ch = (char) num;//强制类型转换System.out.println(ch);//d}
}

4)byte、short和char类型在进行运算时,当做int类型处理

public class Test {public static void main(String[] args) {//byte、short和char类型在进行运算时,当做int类型处理byte b = 10;short s = 12;char ch = 23;int num = b + s + ch;System.out.println(b + s + ch);//45System.out.println(num);//45}
}

六.基本数据类型和字符串类型(String)的转换

1.什么是字符串类型

        ——使用" "号包括起来的一串字符叫做字符串,Java中字符串有特定的数据类型:String

2.一个小case快速了解String类型

public class Test {public static void main(String[] args) {//字符串常量需要使用""包括起来,使用String命名的变量叫做字符串变量String str1 = "我";String str2 = "爱";String str3 = "中";String str4 = "国";//输出System.out.println(str1 + str2 + str3 + str4);//我爱中国}
}

3.为什么需要使用字符串类型和基本数据类型的相互转换

        1)基本数据类型转String类型:基本数据类型 + ""

        2)String类型转基本数据类型:通过基本数据类型的包装类调用parseXXX方法

i.String类型转byte类型:Byte.parseByte();

ii.String类型转short类型:Short.parseShort();

iii.String类型转int类型:Integer.parseInt();

iv.String类型转long类型:Long.parseLong();

v.String类型转float类型:Float.parseFloat();

vi.String类型转double类型:Double.parseDouble();

vii.String类型转boolean类型:Boolean.parseBoolean();

public class Test {public static void main(String[] args) {int num = 100;double data = 100.1314;boolean b = true;//基本数据类型转String类型:基本数据类型 + ""String s1 = num + "";//100,字符串的"100"String s2 = data + "";//100.1314,字符串的"100.1314"String s3 = b + "";//true,字符串的"100.1314"//输出System.out.println(s1 + s2 + s3);//100100.1314true//String类型转基本数据类型:通过基本数据类型的包装类调用parseXXX方法String str1 = "12";String str2 = "123";String str3 = "165";String str4 = "17766";String str5 = "13.1456";String str6 = "17.2345";String str7 = "false";//String类型转byte类型:Byte.parseByte();System.out.println(Byte.parseByte(str1));//12,整数的12,不是字符串的12//String类型转short类型:Short.parseShort();System.out.println(Short.parseShort(str2));//123,整数的123,不是字符串的123//String类型转int类型:Integer.parseInt();System.out.println(Integer.parseInt(str3));//165//String类型转long类型:Long.parseLong();System.out.println(Long.parseLong(str4));//17766//String类型转float类型:Float.parseFloat();System.out.println(Float.parseFloat(str5));//13.1456//vi.String类型转double类型:Double.parseDouble();System.out.println(Double.parseDouble(str6));//17.2345//String类型转boolean类型:Boolean.parseBoolean();System.out.println(Boolean.parseBoolean(str7));//false}
}

4.String类型和基本数据类型转化的细节讨论

1)在String转化为基本数据类型的时候,要确保String类型能共转化为有效的数据

2)若是转化的格式不正确,则会抛出异常

注:异常是程序运行中可能发生的特殊情况,它会导致程序的终止,并可能产生不可预料的结果。异常的出现可能是由于程序的错误、硬件的故障或者其他不可预知的原因。当异常发生时,程序会停止执行,并且会产生一个异常信息,以提供更多的信息,以便程序员可以尽快修复错误。

public class Test {public static void main(String[] args) {//在String转化为基本数据类型的时候,要确保String类型能共转化为有效的数据//若是转化的格式不正确,则会抛出异常String str = "happy";int data = Integer.parseInt(str);//错误,happy不是整数类型的值,不能转化//System.out.println(data);//会抛出异常}
}

七.标识符的命名规则和规范

1.什么是标识符

        ——Java中对各种变量、方法和类等命名时使用的字符序列称为标识符

2.标识符的命名规则

1)由26个英文字母大小写,数字0-9,_和$组成

2)数字不能开头

3)不可以使用关键字和保留字,但能包含关键字和保留字

4)Java中严格区分大小写,标识符长度无限制,但是建议在64个字符以内

5)标识符不能包含空格

3.标识符的命名规范

1)包名:组成报名的所有字母都小写

2)类名、接口名:多个单词组成时,使用每个单词首字母大写,其余字母小写

3)变量名、方法名:多个单词组成时,第一个单词首字母小写,其它单词首字母大写

4)常量名:所有字母都要大写,多个单词时使用下划线_连接

4.关键字

class interface enum byte short int long float double char boolean void

true false null if else while do for switch case default break continue return

private protected public abstract final static synchronized extends implements

new this super instanceof try catch finally throw throws package import

native strictfp transient volatile assert

5.保留字

        ——现在的Java版本尚未使用,但以后的版本可能会作为关键字使用

byValue cast future generic inner operator outer rest var goto const

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

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

相关文章

【《深入浅出计算机网络》学习笔记】第1章 概述

内容来自b站湖科大教书匠《深入浅出计算机网络》视频和《深入浅出计算机网络》书籍 目录 1.1 信息时代的计算机网络 1.1.1 计算机网络的各类应用 1.1.2 计算机网络带来的负面问题 1.2 因特网概述 1.2.1 网络、互联网与因特网的区别与关系 1.2.1.1 网络 1.2.1.2 互联网 …

探讨|使用或不使用机器学习

动动发财的小手&#xff0c;点个赞吧&#xff01; 机器学习擅长解决某些复杂问题&#xff0c;通常涉及特征和结果之间的困难关系&#xff0c;这些关系不能轻易地硬编码为启发式或 if-else 语句。然而&#xff0c;在决定 ML 是否是当前给定问题的良好解决方案时&#xff0c;有一…

24届近5年同济大学自动化考研院校分析

今天给大家带来的是同济大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、同济大学 学校简介 同济大学历史悠久、声誉卓著&#xff0c;是中国最早的国立大学之一&#xff0c;是教育部直属并与上海市共建的全国重点大学。经过115年的发展&#xff0c;同济大学已经…

什么是场景营销,小红书场景营销方式和方法有哪些

现在小红书上最流行的就是场景营销&#xff0c;那什么是场景营销&#xff0c;应该怎么做呢&#xff1f;今天来和大家分享下大家都在说得场景营销是什么&#xff0c;在小红书投放怎么做好场景营销&#xff1f; 一、什么是场景化营销 说白来&#xff0c;场景营销(Scene Marketing…

触控笔和pencil笔一样吗?性价比平板手写笔推荐

其实&#xff0c;目前市面上的很多产品&#xff0c;有的侧重于外观&#xff0c;有的侧重于功能&#xff0c;有的侧重于性能。就像是ipad里的电容笔一样。因此&#xff0c;在选购电容笔时&#xff0c;一定要对电容笔有所了解。在购买之前&#xff0c;一定要对不同种类的电容笔有…

【VSCode】报错:出现段错误解决办法 (Segmentation fault)

VScode报错&#xff1a;Segmentation fault (core dumped)的解决办法 解决Program received signal SIGSEGV, Segmentation fault.的辛酸 Linux环境下段错误的产生原因及调试方法小结 Linux下的段错误Segmentationfault产生的原因及调试方法经典.pdf 解决办法&#xff1a;

第四次作业

1. 简述静态网页和动态网页的区别。 静态页面&#xff1a;请求响应信息&#xff0c;发给客户端进行处理&#xff0c;由浏览器进行解析&#xff0c;显示的页面。在网站设计中&#xff0c;纯粹HTML格式的网页&#xff08;可以包含图片、视频JS (前端功能实现&#xff09;、CSS (…

【论文阅读】基于深度学习的时序异常检测——Anomaly Transformer

系列文章链接 论文一&#xff1a;2022 Anomaly Transformer 文章目录 理论概述代码实战 论文链接&#xff1a; Anomaly Transformer.pdf 代码链接&#xff1a; https://github.com/thuml/Anomaly-Transformer 视频讲解&#xff08;原作者禁止转载&#xff0c;联系的话侵删&am…

九、ESP32控制1602LCD屏幕显示内容

1. 运行效果 2. 1602简介 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字) 市面上字符液晶大多数是基于HD44780液晶芯片的 需要8根数据线来传输要显示的数据,当然还

nvm下载安装配置

一、作用 nvm是node版本管理的工具&#xff0c;具有管理、下载、切换node版本等能力。经常不同项目需要依赖不同版本的node&#xff0c;此时nvm就能有效的解决node版本切换的问题。 二、nvm下载安装配置 &#xff08;1&#xff09;安装包地址 https://github.com/coreybutl…

帕累托森林:IEEE Fellow唐远炎院士出任「儒特科技」首席架构官

导语 「儒特科技」作为一家拥有全球独创性极致化微内核Web引擎架构的前沿科技企业&#xff0c;从成立即受到中科院软件所和工信部的重点孵化及扶持&#xff0c;成长异常迅速。前不久刚正式官方融入中国五大根操作系统体系&#xff0c;加速为其下游上千家相关衍生OS和应用软件企…

css position: sticky;实现上下粘性布局,中间区域滚动

sticky主要解决的问题 1、使用absolute和fixed中间区域需要定义高度2、使用absolute和fixed底部需要写padding-bottom 避免列表被遮挡住一部分&#xff08;底部是浮窗的时候&#xff0c;需要动态的现实隐藏&#xff09; <!DOCTYPE html> <html lang"en"&…

如何创建51单片机KEIL工程

如何创建51单片机KEIL工程步骤&#xff1a; &#xff08;1&#xff09;打开keil软件&#xff0c;点击工具栏-Project&#xff0c;选择创建新的工程&#xff1b; &#xff08;2&#xff09;然后给工程命名&#xff0c;文章以project为例&#xff0c;然后点击保存 &#xff08…

Jtti:Ubuntu静态IP地址怎么配置

在 Ubuntu 中配置静态 IP 地址需要编辑网络配置文件。以下是在 Ubuntu 20.04 版本中配置静态 IP 地址的步骤&#xff1a; 打开终端&#xff0c;以管理员身份登录或使用 sudo 权限。 使用以下命令打开网络配置文件进行编辑&#xff1a; sudo nano /etc/netplan/00-installer-…

python:isdigit()、isalpha()、isalnum() 三个函数的区别和注意点

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 一、isdigit() python关于 isdigit() 内置函数的官方定义&#xff1a; S.isdigit() -> bool Return True if all characters in S are digitsand there is at least one character in S, False otherwise.翻…

nodejs环境部署

1.前言 前端的打包必须要使用nodejs环境 2.部署 下载安装包&#xff0c;在下面的路径中找到适合自己项目合适的版本在下载&#xff0c;可以问一下前端开发人员 路径&#xff1a;Index of /dist/ 我这里是下载了14.21.3版本的nodejs环境,上传到需要部署的主机中 mkdir /opt…

实时服务器监控

为 IT 基础架构建立适当的监控系统的重要性不容低估&#xff0c;管理员使用的监控解决方案可确保通过消除瓶颈和优化资源使用以获得最佳性能来充分发挥基础架构的潜力。 多年来&#xff0c;IT 基础架构变得越来越复杂&#xff0c;对网络监控的需求也随之增加&#xff0c;虽然网…

创建型模式-单例模式

文章目录 一、创建型模式1. 单例设计模式1.1 单例模式的结构1.2 单例模式的实现&#xff08;1&#xff09;饿汉式-方式1&#xff08;静态变量方式&#xff09;&#xff08;2&#xff09;饿汉式-方式2&#xff08;静态代码块方式&#xff09;&#xff08;3&#xff09;懒汉式-方…

Sql server 2005 卸载之后重新安装

Sql server 2005 卸载之后重新安装 Sql sercer 2005在重新安装之前先要进行卸载操作&#xff0c;由于Sql sercer 2005组件都是分散的&#xff0c;所以卸载时要找到对应的位置一个一个卸载&#xff0c;不卸载干净的情况下再次安装时会出现很多问题&#xff0c;导致安装失败。这…

python编写ocr识别图片汉字

当你需要构建一个简单的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;并在其中实现光学字符识别&#xff08;OCR&#xff09;功能时&#xff0c;wxPython是一个强大而灵活的选择。wxPython是一个基于Python的跨平台GUI开发框架&#xff0c;结合了wxWidgets C库…