java基础(面试用)

一、基本语法

1. 注释有哪几种形式?

//单行注释:通常用于解释方法内某单行代码的作用。
//int i = 0;//多行注释:通常用于解释一段代码的作用。
//int i = 0;
//int i = 0;//文档注释:通常用于生成 Java 开发文档。
/*
*int i = 0;
*/

2.标识符和关键字的区别是什么?

  1. 标识符就是一个名字
  2. 关键字是被赋予特殊含义的标识符

3. Java 语言关键字有哪些?

在这里插入图片描述

4.自增自减运算符

int a = 1, b ;
b = a++;//b = 1
b = ++a;//b = 2

5.移位运算符

  1. << :左移运算符,向左移若干位,高位丢弃,低位补零x << 1,相当于 x 乘以 2(不溢出的情况下)。
  2. >> :带符号右移,向右移若干位,高位补符号位,低位丢弃。正数高位补 0,负数高位补 1。x >> 1,相当于 x 除以 2
  3. >>> :无符号右移,忽略符号位,空位都以 0 补齐
int i = -1;
System.out.println("初始数据:" + i);
System.out.println("初始数据对应的二进制字符串:" + Integer.toBinaryString(i));
i <<= 10;
System.out.println("左移 10 位后的数据 " + i);
System.out.println("左移 10 位后的数据对应的二进制字符 " + Integer.toBinaryString(i));//初始数据:-1
//初始数据对应的二进制字符串:11111111111111111111111111111111
//左移 10 位后的数据 -1024
//左移 10 位后的数据对应的二进制字符 11111111111111111111110000000000

6.continue、break 和 return 的区别是什么?

  1. continue:指跳出当前的这一次循环继续下一次循环
  2. break:指跳出整个循环体,继续执行循环下面的语句
  3. return 用于跳出所在方法,结束该方法的运行。







二、基本数据类型

1.Java 中的几种基本数据类型了解么?

在这里插入图片描述

2.基本类型和包装类型的区别?

用途:除了定义一些常量和局部变量之外,我们在其他地方比如方法参数、对象属性中很少会使用基本类型来定义变量。并且,包装类型可用于泛型,而基本类型不可以。

存储方式:基本数据类型的局部变量存放在 Java 虚拟机栈中的局部变量表中,基本数据类型的成员变量(未被 static 修饰 )存放在 Java 虚拟机的堆中。包装类型属于对象类型,我们知道几乎所有对象实例都存在于堆中。

占用空间:相比于包装类型(对象类型), 基本数据类型占用的空间往往非常小。

默认值:成员变量包装类型不赋值就是 null ,而基本类型有默认值且不是 null

比较方式:对于基本数据类型来说,== 比较的是值。对于包装数据类型来说,== 比较的是对象的内存地址。所有整型包装类对象之间值的比较,全部使用 equals() 方法。

3.包装类型的缓存机制了解么?

  1. Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,
  2. Character 创建了数值在 [0,127] 范围的缓存数据,
  3. Boolean 直接返回 True or False
//Integer 缓存源码:
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);
}
private static class IntegerCache {static final int low = -128;static final int high;static {// high value may be configured by propertyint h = 127;}
}
//Character 缓存源码:
public static Character valueOf(char c) {if (c <= 127) { // must cachereturn CharacterCache.cache[(int)c];}return new Character(c);
}private static class CharacterCache {private CharacterCache(){}static final Character cache[] = new Character[127 + 1];static {for (int i = 0; i < cache.length; i++)cache[i] = new Character((char)i);}
}
//Boolean 缓存源码:
public static Boolean valueOf(boolean b) {return (b ? TRUE : FALSE);
}

4.自动装箱与拆箱了解吗?原理是什么?

  • 装箱:将基本类型用它们对应的引用类型包装起来;

  • 拆箱:将包装类型转换为基本数据类型;

  • Integer i = 10 等价于 Integer i = Integer.valueOf(10)

  • int n = i 等价于 int n = i.intValue();

5.为什么浮点数运算的时候会有精度丢失的风险?

float a = 2.0f - 1.9f;
float b = 1.8f - 1.7f;
System.out.println(a);// 0.100000024
System.out.println(b);// 0.099999905
System.out.println(a == b);// false

这个和计算机保存浮点数的机制有很大关系。我们知道计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度发生损失的情况。这也就是解释了为什么浮点数没有办法用二进制精确表示。

6.如何解决浮点数运算的精度丢失问题?

BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
BigDecimal c = new BigDecimal("0.8");BigDecimal x = a.subtract(b);
BigDecimal y = b.subtract(c);System.out.println(x); /* 0.1 */
System.out.println(y); /* 0.1 */
System.out.println(Objects.equals(x, y)); /* true */

7.超过 long 整型的数据应该如何表示?

BigInteger 内部使用 int[] 数组来存储任意大小的整形数据。







三、变量

1.成员变量与局部变量的区别?

语法形式:成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。

存储方式:如果成员变量是使用 static 修饰的,那么这个成员变量是属于类的,如果没有使用 static 修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存

生存时间:从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。

默认值:从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被 final 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。

2. 静态变量有什么作用?

  1. 静态变量也就是被 static 关键字修饰的变量。它可以被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量
  2. 静态变量只会被分配一次内存,即使创建多个对象,这样可以节省内存

3.字符型常量和字符串常量的区别?

形式 : 字符常量是单引号引起的一个字符,字符串常量是双引号引起的 0 个或若干个字符。

含义 : 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)。

占内存大小:字符常量只占 2 个字节; 字符串常量占若干个字节。






四、方法

1.什么是方法的返回值?方法有哪几种类型?

  1. 方法的返回值 是指我们获取到的某个方法体中的代码执行后产生的结果!。
  2. 返回值的作用接收出结果,使得它可以用于其他的操作!
  • 1、无参数无返回值的方法
  • 2、有参数无返回值的方法
  • 3、有返回值无参数的方法
  • 4、有返回值有参数的方法

2.静态方法为什么不能调用非静态成员?

  1. 静态方法是属于类的,在类加载的时候就会分配内存,可以通过类名直接访问。

    非静态成员属于实例对象,只有在对象实例化之后才存在,需要通过类的实例对象去访问。

  2. 在类的非静态成员不存在的时候静态方法就已经存在了,此时调用在内存中还不存在的非静态成员,属于非法操作。

3.静态方法和实例方法有何不同?

1、调用方式

  1. 在外部调用静态方法时,可以使用 类名.方法名 的方式,也可以使用 对象.方法名 的方式
  2. 实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象

2、访问类成员是否存在限制

  1. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),不允许访问实例成员(即实例成员变量和实例方法),而实例方法不存在这个限制。

4.重载和重写有什么区别?

  1. 重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
  2. 重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法

5. 什么是可变长参数?

从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。

public static void method1(String... args) {//......
}
//另外,可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数。
public static void method2(String arg1, String... args) {//......
}

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

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

相关文章

springboot139华强北商城二手手机管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

静态时序分析:时序弧以及其时序敏感(单调性)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中&#xff0c;不管是组合逻辑单元&#xff08;如与门、或门、与非门等&#xff09;还是时序逻辑&#xff08;D触发器等&#xff09;在时序建模时…

算法-排序(sort)

[NOIP2009]分数线划定 题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才&#xff0c;A 市对所有报名的选手进行了笔试&#xff0c;笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定&#xff0c;即如果计划录取…

如何提高工业数据采集的效率和准确性-天拓四方

随着工业4.0和智能制造的兴起&#xff0c;工业数据采集的重要性日益凸显。通过数据采集&#xff0c;企业能够实时监控生产过程&#xff0c;优化资源配置&#xff0c;提高生产效率。在实时监控、生产优化、质量控制等方面&#xff0c;有效的数据采集系统能够为企业提供宝贵的洞察…

幻兽帕鲁服务器多少钱一台?腾讯云新版报价

腾讯云幻兽帕鲁服务器4核16G、8核32G和16核64G配置可选&#xff0c;4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64G35M配置580元年1个月、1740元3个月、6960元一年&#xff0c;腾讯云百科txybk.com分享腾讯云幻兽帕鲁…

java实现六大排序算法

一、冒泡排序算法 package com.xxx.order;public class maopao {public static void main(String[] args) {int[] arr {64, 34, 25, 12, 22, 11, 90};bubbleSort(arr);System.out.println("Sorted array: ");printArray(arr);}static void bubbleSort(int[] arr) {…

QT中一种隐蔽的死锁

造成死锁的情况只有两种: 1.单线程死锁:同一线程对同一个锁连续加锁两次会造成死锁; 延伸:在同一个线程中,一个事件分支中对锁A已经加锁,并且引用了QCoreApplication::processEvents(QEventLoop::AllEvents, 100)或者QCoreApplication::processEvents(QEventLoop::Exclud…

MongoDB安装以及卸载,通过Navicat 15 for MongoDB连接MongoDB

查询id&#xff1a; docker ps [rootlocalhost ~]# docker stop c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rm c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rmi mongo sudo docker pull mongo:4.4 sudo docker images 卸载旧的 sudo docker stop mong…

线上品牌展厅有哪些优点,如何打造线上品牌展厅

引言&#xff1a; 在当今数字化时代&#xff0c;品牌展示的方式也在不断演变&#xff0c;线上品牌展厅作为一种新型的展示方式&#xff0c;正逐渐成为品牌宣传的新宠。但是为什么需要线上品牌展厅&#xff0c;线上品牌展厅有哪些优势呢&#xff1f; 一&#xff0e;为什么需要线…

Java虚拟机内存模型概念

Java虚拟机的内存可以分三个区域&#xff1a;栈&#xff08;stack&#xff09;、堆&#xff08;heap&#xff09;、方法区&#xff08;method area&#xff09;。 虚拟机栈的特点&#xff1a; 1.栈描述的是方法执行的内存模型&#xff0c;每个方法被调用都会创建一个栈帧&…

学习python第三天

一.数据类型 1.获取数据类型 x 10 print(type(x))""" 输出 <class int> """2.复数类型&#xff08;complex&#xff09;详解 复数&#xff08;Complex&#xff09;是 Python 的内置类型&#xff0c;直接书写即可。换句话说&#xff0c…

前后端分离,RSA加密传输方案

1.原理 RSA是一种非对称加密算法。通过生成密钥对,用公钥加密,用私钥解密。对于前后端分离的项目,让前端获取到公钥对敏感数据加密,发送到后端,后端用私钥对加密后的数据进行解密即可。 2.实现 RSA工具类:提供秘钥对生成、公钥获取、私钥解密的方法。 public class R…

浅谈 Unix Timestamp 时间戳

Linux 时间戳通常指的是 Unix 时间戳&#xff0c;即自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数。这个时间戳在许多 Unix 系统和类 Unix 系统&#xff08;包括 Linux&#xff09;中广泛使用。我们日常工作学习中也是很常用的。 但是很多刚学习的小伙伴对这一串数字不知道…

-代码分享-

归并排序的递归函数 void D_MereSort(int a[], int left, int right, int* tmp) { //left和right分别为递归区间的左右端点的下标 //把要归并的两边的区间递归到各只有1个元素就停 if (left > right) return; //mid为递归区间中间下标 int mid (left right) / 2; //递归…

软件工程知识梳理2-需求分析

需求分析时软件定义的最后一个阶段&#xff0c;它的基本任务时准确回答系统必须做什么的问题。 输出&#xff1a;本阶段必须的输出时软件需求规格说明书。 角色&#xff1a;需求分析员 参与者&#xff1a;用户、需求分析员 需求分析遵循的准则&#xff1a; 必须理解并描述问…

【阿里巴巴】【淘天集团天猫超市食品生鲜供应链】技术线-高级Java研发工程师-供应链计划

所属部门:淘天集团&#xff5c;学历:本科 | 工作年限: 3 年 职位描述 负责淘天集团天猫超市&食品生鲜供应链计划系统研发&#xff0c;包括经营计划&#xff0c;需求计划&#xff0c;补货计划&#xff0c;调拨计划&#xff0c;库存健康&#xff0c;资源计划等多个核心业务负…

各品牌主板快速启动热键对照表及CMOS进入方法

各品牌主板快速启动热键对照表 主板品牌 启动按键 笔记本品牌 启动按键 主机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏碁笔记本 F12 惠普台式机 F12 微星主板 F11 华硕笔记本 ESC 宏碁台式机 F12 梅捷主板 F9 惠普笔…

Linux安装docker以及docker安装软件

1.docker安装 依次运行添加yum源 # 更新yum软件 yum update# 安装epel-release yum install -y epel-release# 清理 yum clean all# 列出所有可用软件包 yum list安装并运行docker yum install -y docker-io systemctl start docker检查安装结果docker info 2.docker安装Rabb…

「优选算法刷题」:寻找峰值

一、题目 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复…

elementui 开始结束时间可以选择同一天不同时间段

先在main.js中导入 import moment from moment <el-row><el-col :span"12"><el-form-item label"考试开始时间" prop"startTime"><el-date-picker v-model"shiJuanXinXiForm.startTime" style"width: 100…