JAVA 学习 面试(六)数据类型与方法

数据类型

img

基本数据类型

在这里插入图片描述

为什么float=3.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 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,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(i1==i2); // 输出 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工具类

在这里插入图片描述

方法

构成:

  • 访问修饰符:方法允许被访问的权限范围。( public,protected,private,无修饰符 )
  • 参数列表:可以省略。参数类型 + 参数名,…
  • 返回类型: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 Iterator<T> {boolean hasNext();T next();default void remove() {throw new UnsupportedOperationException();}
}
抽象方法
  • 抽象方法不可以与sychronized共存,因为synchronized方法的锁对象为this,而抽象方法无法确定this是什么,所以不能共存。
  • 抽象方法不能和private、final共存,abstract修饰的类需要被子类继承,abstract修饰的方法需要子类重写,但是final修饰的类不能被继承,final修饰的方法也不能被子类重写,private修饰的方法对子类不可见。
  • 抽象方法不能是静态的,因为抽象方法要被子类实现,而静态方法属于一个类,不能同时属于两个类。
  • abstract与native不能共存,Native方法表示该方法要用另外一种依赖平台的语言实现,不存在着被子类实现的问题,所以不能是抽象的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

trino-435: trino接入TIDB数据源

文章目录 一、TIDB介绍二、TIDB源接入流程三、遇到的错误1、数据源注册:2、查询表数据一、TIDB介绍 二、TIDB源接入流程 三、遇到的错误 1、数据源注册: http://localhost:8080/v1/catalog/register?name=tidb_test {"connector.name":"tidb",&quo…

SpringBoot整合QQ邮箱发送验证码

一、QQ开启SMTP 打开QQ邮箱&#xff0c;点击设置&#xff0c;进入账号&#xff0c;往下滑后&#xff0c;看见服务状态后&#xff0c;点击管理服务 进入管理服务后&#xff0c;打开服务&#xff0c;然后获取授权码 二 、导入依赖 <!-- 邮箱--><dependency>&…

php低版本(7.4)配置过程中遇到的问题及基本解决手段

目前php不支持较低版本的安装&#xff0c;如果安装低版本必须借助第三方库shivammathur //将第三方仓库加入brewbrew tap shivammathur/php //安装PHPbrew install shivammathur/php/php7.4 可能出现的问题 像这样突然中止然后报错&#xff0c;一般是网络问题&#xff0c;或…

Random Sprays Retinex 传统的图像增强算法RSR

文章目录 前言1、Random Sprays Retinex 概况2、Random Sprays Retinex 具体实现2.1、喷雾的生成2.2、径向密度函数的确定2.3、像素的选择2.4、亮度的计算2.5、参数的调整 3、Random Sprays Retinex 算法效果的表现4、Random Sprays Retinex 现存的问题 前言 Random Spray Reti…

C++面试宝典第24题:袋鼠过河

题目 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子。每隔一米就有一个桩子,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳得更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5,就代表袋鼠下一跳最多能够跳5米;如果为0,就会陷进去无法…

代码中遇到的问题2

目录 记录: 好处&#xff1a; 问题一&#xff1a; 解答: 问题二: 解答: 常见类型问题: 记录: string connStr ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; 在代码中写上这段代码&#xff0c;将连接数据库的代码语句放到&#xff…

关于在微信小程序中使用taro + react-hook后销毁函数无法执行的问题

问题&#xff1a; 在 taro中使用navigageTo() 跳转路由后hook中useEffect 的return函数没有执行 没有执行return函数 框架版本&#xff1a; tarojs: 3.6 react: 18.0 原因&#xff1a; 使用navigateTo() 跳转路由的话并不会销毁页面和组件&#xff0c;会加入一…

性能优化-OpenCL运行时API介绍

「发表于知乎专栏《移动端算法优化》」 本文首先给出 OpenCL 运行时 API 的整体编程流程图&#xff0c;然后针对每一步介绍使用的运行时 API&#xff0c;讲解 API 参数&#xff0c;并给出编程运行实例。总结运行时 API 使用的注意事项。最后展示基于 OpenCL 的图像转置代码。在…

L1-093 猜帽子游戏(Java)

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子&#xff0c;有的是黑色的&#xff0c;有的是黄色的。每个人可以看到别人头上的帽子&#xff0c;但是看不到自己的。游戏开始后&#xff0c;每个人可以猜自己头上的帽子是什么颜色&#xff0c;或者可以弃权不猜。如果没有…

17β-Estradiol high sensitivity ELISA kit

高灵敏ELISA试剂盒&#xff0c;可检测到低至14 pg/ml的17β-雌二醇 雌二醇(estradiol) 是由卵巢内卵泡的颗粒细胞分泌的类固醇激素&#xff0c;是主要的雌激素&#xff0c;负责调节女性特征、附属性器官的成熟和月经-排卵周期&#xff0c;促进乳腺导管系统的产生&#xff0c;有…

JanusGraph图数据库的应用以及知识图谱技术介绍

目录 JanusGraph介绍 JanusGraph 的主要优势 JanusGraph的应用&#xff1a; JanusGraph 的行业应用&#xff1a; 架构概览 分布式技术应用 横向扩展能力 程序与janus的交互 Janus与图数据库相关概念 结构化存储 图结构存储 实体关系存储 知识存储技术 JanusGraph介…

软考案例分析题万金油汇总

目录 二、范围管理存在的问题 三、变更管理可能存在的问题 四、招标问题 五、风险管理可能存在的问题 六、采购管理中存在的问题 七、配置管理可能出现的问题 八、配置管理混乱和配置管理相关案例回答 九、项目收尾可能存在的问题 十、人力资源管理存在的问题 十一、…

【MySQL】体系结构

文章目录 体系结构图存储引擎查询建表语句查看当前数据库可支持的存储引擎InnoDB逻辑存储结构架构内存结构磁盘结构体系结构图 体系结构说明 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端…

【大数据精讲】全量同步与CDC增量同步方案对比

目录 背景 名词解释 问题与挑战 FlinkCDC DataX 工作原理 调度流程 五、DataX 3.0六大核心优势 性能优化 背景 名词解释 CDC CDC又称变更数据捕获&#xff08;Change Data Capture&#xff09;&#xff0c;开启cdc的源表在插入INSERT、更新UPDATE和删除DELETE活动时…

08-微服务Seata分布式事务使用

一、分布式事务简介 1.1 概念 事务ACID&#xff1a; A&#xff08;Atomic&#xff09;&#xff1a;原子性&#xff0c;构成事务的所有操作&#xff0c;要么都执行完成&#xff0c;要么全部不执行&#xff0c;不可能出现部分成功部分失 败的情况。 C&#xff08;Consistency&…

npm install运行报错npm ERR! gyp ERR! not ok问题解决

执行npm install的时候报错&#xff1a; npm ERR! path D:..\node_modules\\**node-sass** npm ERR! command failed ...npm ERR! gyp ERR! node -v v20.11.0 npm ERR! gyp ERR! node-gyp -v v3.8.0 npm ERR! gyp ERR! not ok根据报错信息&#xff0c;看出时node-sass运行出现…

写点东西《检查和更新NPM包》

写点东西《检查和更新NPM包》 检查和更新 NPM 包 TL;DR&#xff1b; 用于检查和更新软件包的 NPM 命令# [](#npm-outdated)npm outdatednpm updatenpm update --save-dev --savenpm update -g npm-check-updates 检查和更新软件包的命令npm install -g npm-check-updatesnpx np…

Idea Community社区版如何添加Run Dashboard

最近在学习spring cloud&#xff0c;跟着视频添加run dashboard&#xff0c;发现里面介绍的方法无法适用于idea community(社区版)。 然后自己研究了一下&#xff0c;成功添加&#xff0c;下面分享自己的方法。 如图&#xff0c;我的项目里添加了两个module&#xff0c;我想通…

kubeadm部署k8s1.27.2版本高可用集群(外部etcd集群带TLS认证)

文章目录 环境软件版本服务器系统初始化etcd 证书生成etcd集群部署负载均衡器部署部署k8s集群部署网络组件FAQ 环境 控制平面节点主机的配置最少是2C2G,否则kubeadm init的时候会报错 主机名IP组件系统os128192.168.177.128etcd、kube-apiserver、kube-controller-manager、k…

Cesium for Unity包无法加载

太上老君急急如律⚡令⚡ &#x1f959;关闭UnityHub&#x1f9c0;启动梯子&#x1f96a;cmd 启动UnityHub &#x1f959;关闭UnityHub &#x1f9c0;启动梯子 &#x1f96a;cmd 启动UnityHub 把批处理启动文件&#x1f448;中的exe的路径换成自己的安装目录&#xff01;保存…