JAVA:数据类型与运算符详解

张开发
2026/5/31 11:54:57 15 分钟阅读
JAVA:数据类型与运算符详解
字面常量定义程序中固定不变的量例如“hello world”在程序中的输出不会随着程序的执行而改变则“hello world”即为字面常量字面常量的分类整型直接输出的不带小数点的数字如100,32浮点型:带小数点的数字如9.0,24.5字符型单引号括起来的单个字符如‘帅’‘65’‘a’简称单单字符串型由双引号括起来的字符如:你好you are beautiful123布尔型有两个值ture和false与常量的区分常量通常是一个由用户定义的标识符可以将常值赋值给它而即就是一个单独的固定不变的量可以理解为能将字面常量赋值给常量数据类型变量:在程序中可以改变的量数据类型分为基本数据类型和引用数据类型我们在这里主要介绍的是基本数据类型。基本数据类型也分为整型浮点型字符型布尔型详细分类整型byte【字节型】:从分类可看出byte字节型是java中数据类型中整型的一种和int用法一致只是范围更小占用内存1数据范围-128~127;Plus版【范围更大一般为首字母大写】Byteshort【短整型】占用内存2数据范围-32768~32767; Plus版:Shortint【整型】:整数数据默认为int占用内存4数据范围-2^31~2^31-1; Plus版:Integerlong【长整型】:在java中定义long类型变量时初始化的数据后必须加 L占用内存8数据范围-2^63~2^63-1; Plus版:Long浮点型float【单精度浮点型】在java中定义float类型变量时初始化的数据后必须加 f \ F以便于和双精度浮点型区分占用内存4; Plus版:Floatdouble【双精度浮点型】java默认小数类型为double型且输出时会尽可能将小数点全部输出不会自动保留几位小数相较于C语言更加灵活占用内存8; Plus版:Double字符型char与字面常量一致只能存放单引号括起来的单个字符占用内存2数据范围0~65535; Plus版:Character可存放的数据大体总结为三种单个字母或汉字a帅直接存放数字165等当存放数字时有对应UIcode码的会输出相应字符由反斜杠开头的转义字符:\t \056计算机中字符本质为整数在java中用Unicode码表示字符新包括了中文范围相较C语言更大了故为2字节布尔型boolean只有true和false在java中没有0为假非0为真的说法故不可将除了true和false以外的值赋值给boolean类型的变量占用内存无规定数据范围true\false ; Plus版:Boolean注意在定义变量时需使用合适的数据类型以确保不会超出范围基本数据类型中不包含String字符串类型字符串类型String【大写首字母】String ch1hello; String ch2world; System.out.println(ch1 ch2);代码运行结果为hello world字符串在输出时可用 号进行连接,实现字符串的拼接加号使用若前先出现字符串则后面加号实现字符串的拼接若仍希望实现运算功能手动加即可若前先出先的是数据的运算则加号实现加法运算功能eg:int a10; int b20; System.out.println(abab);//输出为1020 System.out.println(ab(ab));//输出为30字符串与其他类型之间的转换一些情况下需要用到需要用到string类型与其他类型之间的转换以下是一些方法int转成String型方法一直接赋值int num10;String str1num ;方法二使用String.valueof的方法【可将任何类型都转换成字符串型】String strStirng.valueof(num);String转成int型String str100;int numInteger.parseInt(str);String转double型String str12.5;double num2Double.parseDouble(str)自动类型转换隐式由编译器自动进行将数据类型范围小的数据赋值给数据类型范围大的数据时会自动将小类型转为大类型int a3; long b4; ba;//不会报错int型自动转为Long型强制类型转换可能导致精度丢失将数据类型范围大的变量赋值给数据类型小的变量编译器会报错需要手动进行强制类型转换。eg1float a12.5f; double b5.12; a(float)b;//以括号加类型的方式进行强制类型转换eg2byte b1127; byte b2(byte)256;这里127默认为int类型但b1在byte字节型范围内进行隐式转换而b2超出了范围需手动强制类型转换。可以看出java将字面值赋值时会自动针对数字范围进行检查。数据类型提升在将不同类型进行运算时最终的数据类型会转换为范围大类型的int a2; long b10; long cab;//需要用二者中范围大的接收运算结果相同类型\不同类型内存小于4个字节的进行运算会先提升为4字节int再运算byte a10;//1字节 short b2;//2字节 int cab;//提升为4字节进行运算运算符这部分内容较简单基础只需记忆会运用并关注一些细节即可我会尽可能全面的介绍清楚~算术运算符 - * /【取整】 %【取模\取余】一些注意事项%与C语言不同java中取模的两边可以出现小数%取模运算中运算结果的符号取决于前一个数%和/运算时右操作数都不可为0算术运算时若两数数据类型不同会转为大的类型 - * / % 【复合赋值类型】在不同类型进行赋值时会自动进行强制类型转换int num10; int num12.5;//输出num结果为2212.5默认值为double类型numintnum【int】12.5【double】中intdouble类型会升级为double故将其赋值给int类型需要强制类型转换转换不会四舍五入而是直接去掉小数点--【自增自减】与C语言规则一致只需遵循/--在变量前先/--运算再向下执行语句/--在变量后先向下执行语句在进行/--运算关系运算符 !【运算结果只有 true 和 false】注意: 是关系运算符判断是否相等 是赋值运算二者不要混用运算结果没有0和1只有true和false浮点数比较不要使用会有精度差推荐使用两数差的绝对值进行比较比较字符和布尔类值字符可以和字符比较按Unicode值但布尔值就只能和布尔值比较逻辑运算符||【运算符两边只能是布尔表达式】注意因为没有01为真假的说法故运算符两边不能出现单个数值等逻辑与 和逻辑或 || 存在短路按位与和按位或|若表达式结果为布尔值时也可表示逻辑运算但不短路位运算|^~【二进制按位运算】按位与 还要有0结果即为0按位或 | 只要有1结果即为1按位异或 ^ 相异为1相同为00^nn ; n^n0按位取反 ~ 0变11变0int a0xf; System.out.println(~a);//输出为false若不按位取反直接输出为十进制语法上不允许把整数当布尔值使用但逻辑上仍可以使用即把按位运算结果为0判断为false为1判断为true位移运算符【左移】二进制数去掉最左边的数在右边补0左移相当于该数十进制数 * 2【右移】二进制数去掉最右边的数在左边补符号位整数补0负数补1右移相当于该数十进制数 / 2【无符号右移】在去掉右边的数后在左边统一补0没有无符号左移无意义计算机中位移效率高于乘除相对于正数左移N位原数字 * 2^N右移N位原数字 / 2^N条件表达式表达式1 表达式2表达式3【遵循短路求值】表达式1为true时只执行表达式2并返回表达式2的值表达式1为false时只执行表达式3并返回表达式3的值注意是java中唯一一个三目运算符是条件判断语句的简化写法需要定义变量接收快乐的时光总是短暂的以上就是今天的全部内容啦欢迎大家的意见和反馈感谢你的阅读~

更多文章