Java 基本数据类型
变量:就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
- 内置数据类型
- 引用数据类型
Java中绝大部分操作都是基于内存的,我们要存储“卢大宝”这个名字就必须在内存中开辟一块内存区域用于存储,例如:想存储姓名可以如下代码:
String name = "卢大宝";
如果我们舍弃String 直接声明 name = "卢大宝" ,这样在逻辑上是行得通的,因为确实开辟了一块内存来存储数据。但是数类型是让我们合理的使用内存。
封装类型对应如下
案例
byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数据范围是-128~+127
Byte是java.lang中的一个类,目的是为基本数据类型byte进行封装
一般情况包装类用于泛型或提供静态方法,用于基本类型或字符串之间转换,建议尽量不要用包装类和基本类型之间运算,因为这样运算效率会很差的
传递方式不同
基本类型只能按值传递,而每个基本类型对应的封装类是按引用传递的
如果想传递一个int对象的引用,而不是值,那只能用封装类
封装类可以有方法和属性
封装类的出现,是为了更方便的使用一些基本类型不具备的方法,比如valueOf(),toString()等等,具体参考Number类
JDK5.0开始可以自动封包了 ,也就是基本数据可以自动封装成封装类,基本数据类型的好处就是速度快(不涉及到对象的构造和回收),封装类的目的主要是更好的处理数据之间的转换,方法很多,用起来也方便
默认值不同
基本类型跟封装类型的默认值是不一样的。如int i,i的预设为0;Integer j,j的预设为null,因为封装类产生的是对象,对象默认值为null。
存储位置
基本类型在内存中是存储在栈中,引用类型的引用(值的地址)存储在栈中,而实际的对象(值)是存在堆中。
特定场合使用
某些场合,需要用到封装类,比如一个集合List,它只能往里面添加对象,也就是Object,那么直接存数字肯定是不行 的,则需要将数字封装成封装类型对象再存到该List中
Number类
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类
Java Math 类
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
方法 | 描述 |
xxxValue() | 将 Number 对象转换为xxx数据类型的值并返回。 |
compareTo() | 将number对象与参数比较。 字符比较用compareTo()时,长度相同,从第一位开始比较,如果相同返回0,如果不同则返回这两个字符的ascii值的差值 Integer比较用compareTo()时,对比数字时相同,返回0,对比数字不同时,返回-1 |
equals() | 判断number对象是否与参数相等。 |
valueOf() | 返回一个 Number 对象指定的内置数据类型 |
toString() | 以字符串形式返回值。 |
parseInt() | 将字符串解析为int类型。 |
abs() | 返回参数的绝对值。 |
ceil() | 返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。 |
floor() | 返回小于等于(<=)给定参数的最大整数 。 |
rint() | 返回与参数最接近的整数。返回类型为double。 |
round() | 它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。 |
min() | 返回两个参数中的最小值。 |
max() | 返回两个参数中的最大值。 |
sqrt() | 求参数的算术平方根。 |
random() | 返回一个随机数。Math.random()默认产生大于等于0.0且小于1.0之间的随机double型随机数 |
案例
public static void main(String[] args) {
int a = (int) (Math.random()*10+1);
System.out.println(a);// 0~10之间随机数(整数)
Integer b = 1;
Integer c = 100;
Integer d = b.compareTo(c);
double e = b.doubleValue();
System.out.println(e);//1.0
System.out.println(d);//-1
}
Character 类
Character 类用于对单个字符进行操作
方法 | 描述 |
isLetter() | 是否是一个字母 |
isDigit() | 是否是一个数字字符 |
isWhitespace() | 是否是一个空白字符 |
isUpperCase() | 是否是大写字母 |
isLowerCase() | 是否是小写字母 |
toUpperCase() | 指定字母的大写形式 |
toLowerCase() | 指定字母的小写形式 |
toString() | 返回字符的字符串形式,字符串的长度仅为1 |