网站首页 > java教程 正文
Hello All,今天为大家带来Java当中,基本数据类型变量的运算和字符串的运算,首先我们先来回顾下,数据类型都有哪些?根据数据类型划分,Java数据类型分为8种基本数据类型和3种引用数据类型,其中基本数据类型分为整数型(byte、short、int和long),浮点型(float和double),字符型(char)以及布尔型(boolean);引用数据类型分为类,接口以及数组。字符串在Java当中是类的一种。
那么对于基本数据类型变量的运算,且只针对除布尔型以外的7种数据类型,分为自动类型提升运算和强制类型转换运算:
1、自动类型提升(转换):
当容量小的数据类型变量与容量大的数据类型变量做运算时,结果自动提升至容量大的类型(容量表示的是表示数的范围的大小,例如float的容量大于long的容量)
容量顺序:byte、short、char -- > int -- > long --> float --> double
注意:当byte、short、char三种类型做运算时,结果至少要以int接收
public class VariableCalculate {
public static void main(String[] args) {
byte myByte = 2;
int myInt = 129;
int myInt2 = myByte + myInt; // 接收运算结果时,按照尽量大的容量类型接收
//long myLong = myByte + myInt; 返回结果131
//float myFloat = myByte + myInt; 返回结果131.0
System.out.print(myInt2);
// 如未按照规则,则会编译错误,例如:byte myByte2 = myByte + myInt
这个时候有小伙伴可能会疑惑,如果一个字符和一个整数进行相加运算时,结果该是什么样子呢?其实每个字符有对应的ASCII码,例如字符‘a’对应整数97,运算结果如下:
public class VariableCalculate{
public static void main(Sting[] args){
char myChar = 'a';
int myInt = 10;
int myInt2 = myInt + myChar;
System.out.println(myInt2);
}
}
// 返回结果为107
实际编码过程中的特殊情况:
- 定义long整数型时,末尾未加“l”或“L”,则默认数据类型为int,但可能造成数据溢出产生编译失败;
- 定义float浮点型时,末尾为加“f”或“F”,则一定会造成编译错误;
- 涉及常量运算时,整型常量默认为int,浮点型常量默认为double;
2、强制类型转换:自动提升运算的逆运算(将容量大的数据类型变量转换为容量小的数据类型变量)
- 需要使用强转符:();
- 注意:强制类型转换,可能导致精度损失(截断操作导致)
public class VariableCalculate {
public static void main(String[] args) {
//****************强制类型转换******************
double myDouble = 12.5;
int myInt5 = (int)myDouble; // 截断操作,结果为12
System.out.println(myInt5);
}
}
3、字符串(String)变量的使用及运算
- String类型数据引用数据类型,不属于基本数据类型;
- 声明String类型变量时,使用一对“”,注意与char型变量声明进行区分;
- String可以和8种基本数据类型变量做运算,且运算只能是连接运算;
- 运算结果一定是String类型;
public class StringVariable {
public static void main(String[] args) {
String myString = "hello world";
String myString2 = "";
//char myChar = ''; //这里需要注意的是字符声明和字符串声明的区别,字符声明要求不能为空
System.out.println(myString);
System.out.println(myString2);
int myInt = 1001;
String myString3 = myInt + myString + true;
System.out.println(myString3); //+:连接运算,返回结果为1001hello worldtrue
}
}
除此之外也提供了几个示例供大家参考,可以思考下为什么结果是这样?
public class StringVariable {
public static void main(String[] args) {
//练习1
char c = 'a'; //a对应ASCII码:97 A对应ASCII码:65
int num = 10;
String str = "hello";
System.out.println(c + num + str); //返回结果:107hello
System.out.println(c + str + num); //返回结果:ahello10
System.out.println(c + (num + str)); //返回结果:a10hello
System.out.println((c + num) + str); //返回结果:107hello
//练习2
//输出效果:* *,星号间为tab
System.out.println("*\t*"); //满足输出要求
System.out.println('*' + '\t' + '*'); // 返回93,不满足输出要求
System.out.println('*' + "\t" + '*'); // 满足输出要求
System.out.println('*' + '\t' + "*"); // 返回51*,不满足输出要求
System.out.println('*' + ('\t' + "*")); // 满足输出要求
}
}
以上就是本篇的全部内容啦!欢迎大家评论、点赞、收藏和关注,我们下篇再见!
猜你喜欢
- 2024-11-21 期末了还没复习JAVA?莫慌,重点难点知识点都在这。字符串基础
- 2024-11-21 Java8中String内存空间占用分析
- 2024-11-21 字符串去符号转化为数组 #php
- 2024-11-21 JavaScript 数组常用操作
- 2024-11-21 610、springboot输出数组
- 2024-11-21 Axure RP 9 学习笔记 - 字符串函数(3)- 转数组及其他
- 2024-11-21 前端 传来的json数组字符串 后台如何转换
你 发表评论:
欢迎- 最近发表
-
- 五,网络安全IDA Pro反汇编工具初识及逆向工程解密实战
- 「JAVA8」- Lambda 表达式(java lambda表达式原理)
- 深入探讨Java代码保护:虚拟机保护技术的新时代
- Nginx反向代理原理详解(图文全面总结)
- 逆向拆解日本IT,哪些Java技术栈薪资溢价高
- mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比
- Spring Boot集成ProGuard轻松实现Java 代码混淆, Java 应用固若金汤
- 从 Java 代码逆向工程生成 UML 类图和序列图
- 人与人相处:尊重是标配,靠谱是高配,厚道是顶配
- Windows系统安装日期如何修改(windows10怎么修改安装日期)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)