——Java 基础
1.数据类型
基本数据类型不涉及内存分配问题,而引用数据类型需要开发人员为其分配内存空间,并进行关联匹配。
强制类型转换可能导致数据溢出问题。虽然程序支持强制类型转换,但是在将范围大的数据类型强制转换为范围小的数据类型时,依然要考虑该数据是否会发生溢出。
在字符串的操作中,如果要改变内容,在次数不多的情况下可以使用“+
”进行字符串拼接操作(操作次数多的情况使用更高效的StringBuffer
、StringBuilder
类。
关于Java的计算的缺陷
//使用float型浮点数
public class TestDemo{
public static void main(String args[]){
float f1 = 10.2F; //小数都是double型,所以需要强制转换为float型
float f2 = (float)10.2; //小数都是double型,所以需要强制转换为float型
System.out.println(f1*f2); //float类型*float类型=float类型
}
}
输出结果:104.03999
可以发现,本程序的最终计算结果并不是期待的“104.04
”,而是“104.03999
”,这一问题本身属于Java的Bug(从JDK1.0开始的),只依靠计算本身无法解决,但是可以通过 Math
或 BigDecimal
两个高精度计算工具类来得到精确的结果,
原因:二进制数并不能表示全部的十进制小数,对于部分小数来说用二进制数存储的十进制小数只是近似值。
2.运算符
Java中的表达式由操作数、运算符、结果类型和求值顺序等元素组成,这些元素共同构成了复杂的逻辑和计算过程。
关系运算符的主要功能是进行数据的大小关系比较,返回的结果是boolean
型数据(只有true
、false
两种取值)
算术运算符在开发中经常使用到,例如,进行四则运算、求模(取余)、自增等操作。
三目运算符三目是一种赋值运算的形式,执行三目时可以以一个布尔表达式的结果进行赋值,基本的语法结构如下。
数据类型变量 = 布尔表达式 ? 满足此表达式时设置的内容:不满足此表达式时设置的内容;
//如果numA 大于numB, 返回 true,则将numA 的内容赋值给max
//如果numA 小于numB, 返回 false,则将numB 的内容赋值给max
int max= numA>numB ? numA:numB;
3.方法的定义
方法的主要功能是封装可以执行的一段代码,这样不仅可以进行重复调用,更可以方便地实现代码的维护
在Java中,定义方法的时机取决于程序的组织和逻辑结构。以下是一些常见的情况,可以考虑定义一个方法:
代码重复:当代码块需要在多个地方使用时,可以将其封装在一个方法中。这样提高了代码的可读性、可维护性,并减少代码的重复;
功能模块化:当某个功能需要进行模块化的处理或操作时,可以将其实现封装在一个方法中。这样方便其他部分的调用;
复杂逻辑:当代码包含一系列复杂的判断、计算或操作过程时,可以将其抽象为一个方法。这样可以简化主要逻辑的代码结构,使其更易于理解和维护;
面向对象设计:根据面向对象的原则,每个对象都应该具备相应的行为(方法)。因此,在设计类的过程中,需要根据对象的职责和行为来定义相应的方法。所以,当代码存在重复、需要模块化、包含复杂逻辑或符合面向对象设计原则时,都可以考虑定义一个方法。这样可以提高代码的可读性、可维护性和可复用性。
方法重载
方法的重载是指 在同一个类中方法名称相同,参数的类型或个数不同,调用的时候将会按照 传递的参数类型和个数完成不同方法体的执行。