保之友微网站怎么建,域名查询官网入口,小白怎么做跨境电商,网站利用微信拉取用户做登录页数据类型 基本数据类型 为什么float3.4报错
3.4 默认是浮点double类型的#xff0c;如果赋值给float是向下转型#xff0c;会出现精度缺失#xff0c;#xff0c;需要强制转换
Switch支持的数据类型#xff1f;
byte、short、int、char 、 enum 、 String
基本类型与包…数据类型 基本数据类型 为什么float3.4报错
3.4 默认是浮点double类型的如果赋值给float是向下转型会出现精度缺失需要强制转换
Switch支持的数据类型
byte、short、int、char 、 enum 、 String
基本类型与包装类的区别
## 存储位置不同
基本数据类型直接将值放在栈中非static的成员变量存在堆中
包装类型是把对象放在堆中然后通过对象的引用来调用他们
## 初始值不同
int的初始值为 0 、 boolean的初始值为false
包装类型的初始值为null
## 使用方式不同
基本数据类型直接赋值使用就好
在集合如 coolectionMap 中只能使用包装类型包装类型可以使用在泛型中基本类型与包装类的相互转换
## 手动转换
基本数据类型 → 包装类通过对应包装类的构造方法实现Integer.valueOf(10)除了Character外其他包装类都可以传入一个字符串参数构建包装类对象。
包装类 → 基本数据类型通过包装类的实例方法 xxxValue() 实现; // xxx表示包装类对应的基本数据类型
## 自动装箱自动拆箱jdk1.5以后
基本类型添加到集合中时进行自动装箱
包装类型在涉及到运算的时候“加减乘 除” 以及 “比较 equals,compareTo”进行自动拆箱包装类型的缓存机制
Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128127] 的相应类型的缓存数据Character 创建了数值在 [0,127] 范围的缓存数据Boolean 直接返回 True or False。
Integer i1 33;
Integer i2 33;
System.out.println(i1 i2);// 输出 trueInteger i1 40;
Integer i2 new Integer(40);
System.out.println(i1i2); // 输出 False引用数据类型 和 数组
## 引用数据类型的变量定义及赋值格式
数据类型 变量名 new 数据类型();
调用该类型实例的功能变量名.方法名();
## 数组
一组数据的集合数组中的每个数据被称作元素
在数组中可以存放任意类型的元素但同一个数组里存放的元素类型必须一致。
格式: int[] x new int[100];
使用属性数组名.length数组
初始化
动态初始化数组声明且为数组元素分配空间与赋值的操作分开进行
int[] arr new int[3];
arr[0] 3;
arr[1] 9;
arr[2] 8;
静态初始化在定义数组的同时就为数组元素分配空间并赋值
int arr[] new int[]{ 3, 9, 8};
int[] arr {3,9,8};Arrays工具类 方法
构成
访问修饰符方法允许被访问的权限范围。( publicprotectedprivate无修饰符 )参数列表可以省略。参数类型 参数名…返回类型void、任何数据类型
注意
方法参数是 基本类型 传递的是值。包含String类型形式参数的改变对实际参数不影响方法参数是 引用类型传递的是内存地址值。String类型除外形式参数的改变对实际参数有影响
可变参数
public void sum(int... n){}可变参数一定在最后可以将数组传递给可变参数列表可变参数的实质就是数组一个参数是可变参数一个参数是一维数组这两个方法不是重载因为 一个可变参数等价于相应类型的一维数组方法重载的时候既可以定义有可变参数的同名方法也可以定义有确定参数个数的方法jvm调用方法时会优先调用 有确定参数个数 的方法
默认方法
背景实现接口的类必须为接口中定义的每个方法提供一个实现或者从父类中继承它的实现。但是一旦类库的设计者需要更新接口向其中加入新的方法这种方式就会出现问题。现存的实体类往往不在接口设计者的控制范围之内这些实体类为了适配新的接口约定也需要进行修改为了让类库的设计者放心地改进应用程序接口无需担忧对遗留代码的影响
Java 8引入了一个新功能叫默认方法通过默认方法你可以指定接口方法的默认实现接口能提供方法的具体实现。实现接口的类如果不显式地提供该方法的具体实现就会自动继承默认的实现。
// List 接口中的 sort 方法是Java 8中全新的方法,新 default 修饰符
default void sort(Comparator? super E c){Collections.sort(this, c);
}作用采用默认方法之后你可以为这种类型的方法提供一个默认的实现这样实体类就无需在自己的实现中显式地提供一个空方法。通过这种方式你可以减少无效的模板代码。实现 Iterator 接口的每一个类都不需要再声明一个空的 remove 方法了因为它现在已经有一个默认的实现。
// Iterator 接口就为 remove 方法提供了一个默认实现
interface IteratorT {boolean hasNext();T next();default void remove() {throw new UnsupportedOperationException();}
}抽象方法
抽象方法不可以与sychronized共存因为synchronized方法的锁对象为this而抽象方法无法确定this是什么所以不能共存。抽象方法不能和private、final共存abstract修饰的类需要被子类继承abstract修饰的方法需要子类重写但是final修饰的类不能被继承final修饰的方法也不能被子类重写private修饰的方法对子类不可见。抽象方法不能是静态的因为抽象方法要被子类实现而静态方法属于一个类不能同时属于两个类。abstract与native不能共存Native方法表示该方法要用另外一种依赖平台的语言实现不存在着被子类实现的问题所以不能是抽象的。