float f=3.4;是否正确?

不正确

3.4是双精度,将双精度赋值给浮点型属于向下转型,会造成精度损失;

因此需要强制类型转换:

方式一:float f=(float)3.4

方式二:float f=3.4F

&和&&的区别?

&运算符有两种用法 (1):按位与;(2):逻辑与

&&运算符是短路与运算。

逻辑与和短路与的区别是很大的,虽然二者都要求运算符左右两端的布尔值都为true整个值才为true。

&&之所以为短路与是因为:如果&&左边的表达式值为false,右边的表达式会被直接短路掉,不会运行计算。

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math.round:返回与括号内值最相近的整数

Math.round(11.5):等于12

Math.round(-11.5):等于-11

public class Test {
public static void main(String[] args) {
System.out.println(Math.round(11.5));
System.out.println(Math.round(11.4));
System.out.println(Math.round(-11.5));
System.out.println(Math.round(-11.4));
System.out.println(Math.round(-11.6));
}
} 结果: 12
11
-11
-11
-12

可以看出,正数情况下,0,1,2,3,4向下取整;5,6,7,8,9向上取整

补充:

static double ceil(double a):返回大于等于a的最小整数

static double floor(double a):返回小于等于a的最大整数

static double rint(double a):返回与a最相近的整数,返回10.0

static long round(double a):返回与a最相近的长整形数

static int round(float a):返回与a最相近的整型数

System.out.println(Math.ceil(-11.6));
System.out.println(Math.ceil(11.6));
System.out.println(Math.floor(11.6));
System.out.println(Math.floor(-11.6));
System.out.println(Math.rint(11.6));
System.out.println(Math.rint(-11.6)); 结果: -11.0
12.0
11.0
-12.0
12.0
-12.0

switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

  • 在Java5以前:swich(expr)中,expr只能是 byte、short、char、int。
  • 从java5开始:java中引用了枚举类型,expr可以是enum类型
  • 从java7开始:expr可以是String引用类型
  • 目前所有版本:expr不可以是long类型

数组有没有length()方法?String有没有length()方法?

  • 数组没有length()方法,只有length属性

    • arr.length
  • String有length()方法
    • str.length()

在Java中,如何跳出当前的多重嵌套循环?

在最外层前加个标记A,然后可以通过break A来结束循环

构造器(constructor)是否可被重写(override)?

构造器不能被继承,也不能被重写,但可以被重载。

两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

不对

如果两个对象满足x.equals(y) == true,那么它的hashcode一定相同

java对equals和hashcode是这样规定的:

  • 如果两个对象的相同(x.equals(y) == true),那么它们的hashcode一定相同
  • 如果相关对象的hashcode相同,它们并不一定相同
  • 更详细的内容请返回《Java面试必知必会》的基础部分查看

是否可以继承String类?

String是final类,不可继承

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

值传递

java语言的方法调用只支持参数的值传递。

当一个对象实例做为一个参数被传递到方法时,参数的值就是该对象的引用

char型变量能不能存储一个中文汉字,为什么?

char类型可以存储一个中文汉字,因为java中使用的编码是Unicode,一个char类型占2个字节(16比特),所以放一个汉字是没有问题的。

静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?

Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化

Java 中会存在内存泄漏吗,请简单描述。

理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务器端编程的一个重要原因);

然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致内存泄露的发生。

抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰?

都不能。

  • 抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。
  • 本地方法是由本地代码(如C代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。
  • synchronized和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。

阐述静态变量和实例变量的区别。

  • 静态变量 是被static修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;
  • 实例变量 必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。

是否可以从一个静态(static)方法内部发出对非静态(no-static)方法的调用?

不可以,静态方法只能访问静态成员,因为非静态方法的调用要先创建对象,在调用静态方法时可能对象并没有被初始化。

如何实现对象克隆?

有两种方式

  • 实现Cloneable接口并重写Object类中的clone()方法;
  • 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆

String s = new String("xyz");创建了几个字符串对象?

两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象。

接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?

接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。

一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制?

可以。

但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。

匿名内部类是否可以继承其它类?是否可以实现接口?

可以继承其他类或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和回调

内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?

一个内部类对象可以访问创建它的外部类对象的成员,包括私有成员。

如何将字符串转换为基本数据类型? 如何将基本数据类型转换为字符串?

调用基本数据类型对应的包装类中的方法parseXXX(String)valueOf(String)即可返回相应基本类型;

  • 一种方法是将基本数据类型与空字符串("")连接(+)即可获得其所对应的字符串;
  • 另一种方法是调用String 类中的valueOf()方法返回相应字符串

怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?

new String() + getBytes()方法

String s1 = "WMS";
String s2 = new String(getBytes("GB2312"), "ISO-8859-1");

try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?

会执行,在方法返回调用者前执行。

Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?

在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理

  • try用来指定一块预防所有异常的程序
  • catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;
  • throw语句用来明确地抛出一个异常;
  • throws用来声明一个方法可能抛出的各种异常
  • finally为确保一段代码不管发生什么异常状况都要被执行;

列出一些你常见的运行时异常?

  • ArithmeticException(算术异常)
  • ClassCastException (类转换异常)
  • IllegalArgumentException (非法参数异常)
  • IndexOutOfBoundsException (下标越界异常)
  • NullPointerException (空指针异常)
  • SecurityException (安全异常)

Java面试必知必会(扩展)——Java基础的更多相关文章

  1. Java面试必知必会:基础

    面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...

  2. 第3节:Java基础 - 必知必会(上)

    第3节:Java基础 - 必知必会(上) 本篇是基础篇的第一小节,我们从最基础的java知识点开始学习.本节涉及的知识点包括面向对象的三大特征:封装,继承和多态,并且对常见且容易混淆的重要概念覆盖和重 ...

  3. 第4节:Java基础 - 必知必会(中)

    第4节:Java基础 - 必知必会(中) 本小节是Java基础篇章的第二小节,主要讲述抽象类与接口的区别,注解以及反射等知识点. 一.抽象类和接口有什么区别 抽象类和接口的主要区别可以总结如下: 抽象 ...

  4. Java并发必知必会第三弹:用积木讲解ABA原理

    Java并发必知必会第三弹:用积木讲解ABA原理 可落地的 Spring Cloud项目:PassJava 本篇主要内容如下 一.背景 上一节我们讲了程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单? ...

  5. 必知必会之 Java

    必知必会之 Java 目录 不定期更新中-- 基础知识 数据计量单位 面向对象三大特性 基础数据类型 注释格式 访问修饰符 运算符 算数运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 三目表达式 ...

  6. 第5节:Java基础 - 必知必会(下)

    第5节:Java基础 - 必知必会(下) 本小节是Java基础篇章的第三小节,主要讲述Java中的Exception与Error,JIT编译器以及值传递与引用传递的知识点. 一.Java中的Excep ...

  7. 必知必会之Java注解

    必知必会之Java注解 目录 不定期更新中-- 元注解 @Documented @Indexed @Retention @Target 常用注解 @Deprecated @FunctionalInte ...

  8. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...

  9. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

随机推荐

  1. Linux中编写Shell脚本

    目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (())  数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令 ...

  2. Windows域的管理

    目录 域的管理 默认容器 组织单位的管理 添加额外域控制器 卸载域控服务器 组策略应用 域的管理 域用户账户的管理 创建域用户账户 配置域用户账户属性 验证用户的身份 授权或拒绝对域资源的访问 组的管 ...

  3. POJ3422简单费用流

    题意:      给一个n*n的矩阵,从左上角走到右下角,的最大收益,可以走k次,每个格子的价值只能取一次,但是可以走多次. 思路:       比较简单的一个费用流题目,直接拆点,拆开的点之间连接两 ...

  4. Windows核心编程 第十八章 堆栈

    第1 8章 堆 栈 对内存进行操作的第三个机制是使用堆栈.堆栈可以用来分配许多较小的数据块.例如,若要对链接表和链接树进行管理,最好的方法是使用堆栈,而不是第 1 5章介绍的虚拟内存操作方法或第1 7 ...

  5. pyhive的基本使用

    安装 yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib  # 解决报错:sasl/sasl.h: No such file or di ...

  6. WireShark之抓telnet密码

    背景环境: 涉及到telnet和ssh知识的时候,必须要提的是telnet传输是明文的不安全的,传输的密码都会泄露,有兴趣来做个试验. 一:工具 ·①Windows 7 PC机:②GNS3:③Wire ...

  7. 运行程序显示丢失“MSVCR100D.dll”

    前言 写了一个Dll注入工具,结果发现程序在其他机器上会出现丢失"MSVCR100D.dll".这个dll是vs2010自带的动态链接库,如果在没安装vs2010运行库的电脑中使用 ...

  8. Logstash 的命令行入门 ( 附上相关实验步骤 )

    Logstash 的命令行入门 ( 附上相关实验步骤 ) 在之前的博客中,我们已经在 Macbook Big Sur 环境下安装了 ELK 的相关软件,并且已经可以成功运行对应的模块: 如果没有安装的 ...

  9. Jsp授课

    2.1 JSP基础 2.1.1 JSP简介 JSP全称是Java Server Page,是一种动态网页技术标准.它和Servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为JSP/ ...

  10. 原生JS和jQuery创建元素的方法

    jQ创建元素的方法 1.原生代码 .creatElement('tr')` .innerHTML = '<h1>加油</h1>' document.write('<h1& ...