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

news2024/10/4 23:49:30
数据类型

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);// 输出 true

Integer 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.coloradmin.cn/o/1406114.html

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

相关文章

Git的merge和rebase你真的了解吗?

1. 前言 在我们的日常开发中&#xff0c;Git扮演着重要的角色&#xff0c;负责管理代码的版本。分支管理在开发过程中具有显著的影响。通常情况下&#xff0c;我们有生产、预发、测试和开发这几种分支。根据项目的不同阶段&#xff0c;我们会将代码提交到相应的版本上。标准的…

OpenGL ES 实现图像腐蚀、膨胀、边缘检测

前文我们详细讲了图像锐化的基本原理,本文再介绍一下图像基本处理之腐蚀、膨胀和边缘检测,它们在图像处理和计算机视觉领域有着广泛的应用。 图像腐蚀(Image Erosion):用于缩小或消除图像中物体的边界。主要用于去除图像中的小细节、噪声或不规则物体。 实现图像腐蚀的片…

【Android 10】 BatteryController

学习了一下电池的相关模式&#xff0c;也就是它的观察者模式&#xff0c;先附上图 图应该挺清晰的&#xff0c;BatteryControllerImpl就是被观察者&#xff0c;BatteryControllerImpl重写了CallbackController的两个方法用于添加或移除观察者。 void addCallback(T listener);…

编码下的雪景:如何用HTML和JS让雪花在屏幕上舞动

这段时间&#xff0c;全国各地都加入了下雪的队伍当中&#xff0c;看着窗外漫天飞雪&#xff0c;想着我的网站上面也来一场雪吧。正琢磨着如何实现&#xff0c;网上突然蹦出来一段下雪的代码&#xff0c;这不正是我要的么&#xff1f;先来看看效果吧。 效果一 效果二 效果三 要…

7.Feign远程调用

2.Feign远程调用 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; •代码可读性差&#xff0c;编程体验不统一 •参数复杂URL难以维护 Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;https://github.com/OpenF…

Modbus通信无法正确接收应答的问题处理

问题现象&#xff1a; 现场反馈&#xff0c;modbus网关无法正确读取就地设备的温度信息。使用PC连接就地设备可以正常读取。 问题调查&#xff1a; 拿到末端设备后&#xff0c;故障现象可重复&#xff0c;不过使用PC的USB转485适配器也无法正常读取数据。 如下图&#xff1…

不要为了学习而学习

经常有朋友问我&#xff1a; 老师&#xff0c;从您这里学了很多方法&#xff0c;也一直想要改变自己&#xff0c;但总是没办法坚持下去&#xff0c;怎么办&#xff1f; 这个问题&#xff0c;我也很无奈啊。毕竟我也没办法飞到你身边&#xff0c;手把手把每一步都教给你。&…

万字长文详解Java线程池面试题

王有志&#xff0c;一个分享硬核 Java 技术的互金摸鱼侠 加入 Java 人的提桶跑路群&#xff1a;共同富裕的Java人 今天是《面霸的自我修养》第 6 篇文章&#xff0c;我们一起来看看面试中会问到哪些关于线程池的问题吧。数据来源&#xff1a; 大部分来自于各机构&#xff08;J…

编程入门:五个你必须知道的编程常识

常识1&#xff1a;编程不仅仅是写代码 当我们谈论编程时&#xff0c;大多数人首先想到的是写代码。这是正确的&#xff0c;但并不完整。编程不仅仅是写代码&#xff0c;而是解决问题的一种方式。编程是一种工具&#xff0c;我们使用它来创建能够解决特定问题的产品和服务。 比…

【日常聊聊】自然语言处理的发展

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 技术进步 应用场景 挑战与前景 伦理和社会影响 实践经验 结语 我的其他博客 前言 自然语言处理&#xff08;NLP&#xf…

iLO 安装中文固件包

前言 安装中文版本的安装包&#xff0c;需要把对应的ilo安装到固定的版本上&#xff0c;ilo的版本是2.70。必须是这个版本&#xff1b; 如果不是这个版本就需要刷到对应的ilo版本 下载对应的固件包。 到这个界面选择文件&#xff0c;然后点击上载。 以上就是刷系统包的步骤。 …

物流实时数仓——概述与准备工作

目录 一、架构设计与技术栈 (一)数仓架构设计 (二)所用技术栈 (三)最终效果 二、关于离线与实时的相关概念 三、实时数仓设计思路 一、架构设计与技术栈 (一)数仓架构设计 (二)所用技术栈 Hadoop 3.3.4 Zookeeper 3.7.1 Kafka 3.3.1 Hbase 2.4.11 Redis 6.0.8 Flink 1.17…

Linux操作系统概念

绪论​&#xff1a; “心灵纯洁的人&#xff0c;生活充满甜蜜和喜悦。——列夫托尔斯泰”&#xff0c;本章的主要内容是介绍了硬件的组成结构冯诺依曼体系结构以及操作系统的概念和操作系统的作用&#xff0c;本章的内容主要是理论他起到承上启下的作用只有理解了操作系统的运行…

基于SpringBoot Vue宠物领养系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

了解面试必会算法Sliding Window 模式的前世今生

大家好&#xff0c;今天我们来聊一聊sliding window pattern。又是给有个机会给班花讲题的好机会&#xff0c;不能错过&#xff01; Sliding Window Pattern&#xff0c;中文名字叫滑动窗口模式&#xff0c;是一种常见的算法思想。它可以用来解决很多问题&#xff0c;比如&am…

STATA DEA代码说明及样本数据

STATA_DEA代码说明及样本数据 含DEA模型代码和malmquist指数stata代码 包含具体说明 数据包络分析&#xff08;Data envelopment analysis&#xff0c;DEA&#xff09;是运筹学和研究经济生产边界的一种方法。该方法一般被用来测量一些决策部门的生产效率。 DEA是一个线性规…

苹果眼镜(Vision Pro)的开发者指南(5)-主要工具

主要工具有:Xcode、Reality Composer Pro、Unity 第一部分:【用Xcode进行开发】 开始使用Xcode为visionOS进行开发。将向你展示如何在你现有的项目中添加一个visionOS目标,或者构建一个全新的应用,在Xcode预览中创建原型,以及从Reality Composer Pro中导入内容。还将分享…

七八分钟快速用k8s部署springboot前后端分离项目

前置依赖 k8s集群&#xff0c;如果没有安装&#xff0c;请先安装 kubectl &#xff0c;客户端部署需要依赖 应用镜像构建 应用镜像构建不用自己去执行&#xff0c;相关镜像已经推送到docker hub 仓库&#xff0c;如果要了解过程和细节&#xff0c;可以看一下&#xff0c;否…

从零学Java MySQL

MySQL 文章目录 MySQL初识数据库思考&#xff1a;1 什么是数据库&#xff1f;2 数据库管理系统 初识MySQLMySQL卸载MySQL安装1 配置环境变量2 MySQL目录结构及配置文件 连接MySQL数据库基本命令MySQL基本语法&#xff1a;1 查看MySQL服务器中所有数据库2 创建数据库3 查看数据库…

C++ 之LeetCode刷题记录(十六)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 100. 相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在…