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. JVM垃圾回收的三种方式

    * 垃圾回收有三种方式 * 一.清除:将需要回收对象的内存空间存放在内存列表中,当需要为新对象分配内存的时候,就会从内存列表中拿取空间分配.不过这种分配方式有两个缺点 * 第一个缺点是内存空间碎片化, ...

  2. 多线程-2.线程创建方式和Thread类

    线程的创建方式 1.继承Thread类,重写run方法,示例如下: 1 class PrimeThread extends Thread { 2 long minPrime; 3 PrimeThrea ...

  3. restful 与 webapi 详解

    restful 什么是API API全称Aplication Programming Itererface即应用程序编程接口, 我们在开发应用程序时经常用到.API作为接口,用来"连接&qu ...

  4. 如何实现一个 System Services?

    <Android 系统开发做什么?>写到 Android System Services 是专注于特定功能的模块化组件,应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件.An ...

  5. JAVA 面试相关

    1. int和Integer有什么区别? 答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类 ...

  6. [bug] NameNode无法启动 invalid-uri-for-namenode-address

    配置文件core-site.xml中设置有误 <property> <name>fs.defaultFS</name>(NameNode地址) <value& ...

  7. 【转载】CentOS下查看电脑硬件设备属性命令

    CentOS下查看电脑硬件设备属性命令2018年09月13日 17:48:31 乔烨 阅读数 510如何在linux下查看电脑硬件设备属性 # uname -a # 查看内核/操作系统/CPU信息 # ...

  8. 联想 lenove 3750 M4服务器更改启动项和管理口IP

    联想 lenove 3750 M4服务器更改启动项和管理口IP 注: 因为在机房拍照的原因,再加上工作比较忙:整理成文档的时候有的过程已经忘记了,所以有的步骤可能会缺失,里面的选项都已经用中文方式表达 ...

  9. Scala 字符串插值器

    Scala 提供了三种创新的字符串插值方法:s,f和raw,使用他们我们可以方便快捷的组合字符串. s 字符串插值器 在任何字符串前加上s,就可以直接在串中使用变量了,在生成字符串的时候会隐式调用其t ...

  10. Linux中级之windows下使用curl命令(cmd命令行)

    在官网下载工具包:http://curl.haxx.se/download.html(根据自己电脑系统位数选择) 使用方式一:在curl.exe目录中使用 解压下载后的压缩文件,通过cmd命令进入到c ...