《Java程序员面试宝典》学习笔记(基本语法部分)

这是我学习欧立奇《Java程序员面试宝典》第三版的笔记。这篇是基本语法部分。

ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。

在Java中,字符只以一种形式存在,那就是Unicode。在JVM内部一切都由Unicode表示,而输出到外部后(JVM和OS的交界处就是各种输入/输出流)转换为其他形式的编码。

Java用了中间缓存变量的机制,所以,j=j++可换成如下写法:

temp=j;

j=j+1;

j=temp;

float z = 1.0编译不能通过。因为1.0是double型,需要1.0f才能通过。

可以使用包装类进行基本类型的强制转换。例如:

float f1=100.00f;

Float f2=new Float(f1);

Double d1=f2.doubleValue();

s+1为int, 不能直接赋值给short。

main方法必须是public的,但可以抛出异常、声明参数。

使用三目运算符时,Java会针对精度类型执行自动类型转换。

&、|与&&、||的重要区别是:前者是非短路运算,后者是短路运算。

<<      :     左移运算符,num << 1,相当于num乘以2

>>      :     右移运算符,num >> 1,相当于num除以2

>>>    :     无符号右移,忽略符号位,空位都以0补齐

>>32等于>>0

若有多个catch块,只会匹配其中一个异常类并执行catch块代码。

finally结构在return前被执行。

Java I/O(略)

判断一个数是不是2的阶次方数:将该数减1之后执行“与”操作

for循环可以不包括{},但仅限于执行语句。

利用筛选法查找素数(略)

一段程序可以建议垃圾回收执行,但不保证一定会被执行。

典型的内存泄露原因:全局集合、缓存、ClassLoader驻留在内存中

clone方法是在object中定义的,但只有实现了clonable接口,才可以调用clone方法,否则会抛出异常。

wait()是在Object类中定义的方法,而sleep不是。

Java内部类和C++嵌套类有什么区别?

C++:虽然嵌套类在封装类内部定义,但它是一个独立的类,基本上与封装类不相关。它的成员不属于封装类,同样,封装类的成员也不属于该嵌套类。嵌套类的出现只是告诉封装类有一个这样的类型成员供其使用。

Java:静态嵌套类与C++嵌套类类似,可以直接访问封装类的static成员,但是,如要访问非静态成员就要使用一个封装类的对象作为载体。非静态嵌套类允许我们直接访问封装类的所有成员,不论静态成员还是非静态。

map.entryset()返回entryset,顺序是随机的。

hashmap和hashtable有什么区别?

hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

HashMap是Hashtable的轻量级实现(非线程安全的实现)。

Java中不可以覆盖构造函数,子类的构造函数会自动先调用父类的构造函数。

有默认的复制构造函数,但只提供位复制。

重载和覆盖的不同:

重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同参数列表不同的方法之间就构成了重载关系。

覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。

静态方法不能被覆盖。

新建子类对象时,在父类的构造方法中调用了xxx方法,而xxx方法在子类中被覆盖过,则会在父类中直接调用子类的xxx方法。

匿名内部类不能继承其它类,但可以实现接口。

抽象类不能是final的。

时间: 2024-08-02 06:59:27

《Java程序员面试宝典》学习笔记(基本语法部分)的相关文章

《JAVA 程序员面试宝典(第四版)》读书笔记之前言

工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过什么NB公司,做过什么样NB的项目,上来就先拿一份基础的题目来考核你看一下你的水平.一开始我是排斥的,总感觉考这些东西没有什么用,反正有的东西工作中不一定就用得到,只要自己能够做出东西来就可以了.问题来了怎么样子才算“做出东西”呢?这个问题总感觉很难从理论上来回答,就拿我这几年工作的事情来说吧,在这

Java程序员的JavaScript学习笔记 (目录)

终于完结了,历时半个月. 内容包括: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源码级解析. jQuery EasyUI源码级解析. Java程序员的JavaScript学习笔记(1——理念) Java程序员的JavaScript学习笔记(2——属性复制和继承) Java程序员的JavaScript学习笔记(3——this/call/apply) Java程序员的JavaScript学习笔记(4——this/闭包/getter/setter) Java

Java程序员的JavaScript学习笔记(14——扩展jQuery UI)

计划按如下顺序完成这篇笔记: Java程序员的JavaScript学习笔记(1--理念) Java程序员的JavaScript学习笔记(2--属性复制和继承) Java程序员的JavaScript学习笔记(3--this/call/apply) Java程序员的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序员的JavaScript学习笔记(5--prototype) Java程序员的JavaScript学习笔记(6--面向对象模拟) Java程序员

Java程序员的JavaScript学习笔记(汇总目录)

终于完结了,历时半个月. 内容包括: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源码级解析. jQuery EasyUI源码级解析. Java程序员的JavaScript学习笔记(1--理念) Java程序员的JavaScript学习笔记(2--属性复制和继承) Java程序员的JavaScript学习笔记(3--this/call/apply) Java程序员的JavaScript学习笔记(4--this/闭包/getter/setter) Java

Java程序员的JavaScript学习笔记(5——prototype和Object内置方法)

计划按如下顺序完成这篇笔记: 理念. 属性复制和继承. this/call/apply. 闭包/getter/setter. prototype. 面向对象模拟. jQuery基本机制. jQuery选择器. jQuery工具方法. jQuery-在"类"层面扩展. jQuery-在"对象"层面扩展. jQuery-扩展选择器. jQuery UI. 扩展jQuery UI. 这是笔记的第5篇,聊聊prototype.内置的Object对象和Object对象的属性和

Java程序员的JavaScript学习笔记(2——属性复制和继承)

计划按如下顺序完成这篇笔记: 理念. 属性复制和继承. this/call/apply. this/闭包/getter/setter. prototype. 面向对象模拟. jQuery基本机制. jQuery选择器. jQuery工具方法. jQuery-在"类"层面扩展. jQuery-在"对象"层面扩展. jQuery-扩展选择器. jQuery UI. 扩展jQuery UI. 这是笔记的第2篇,聊聊属性复制和继承的事情.非常基础,同样,也非常重要. 一切皆

《Java程序员面试宝典》学习笔记(数据结构部分)

有一千万行重复的短信,以文本文件的形式保存,一行一条,有重复.如何找出重复次数最多的10条? 可以用哈希表的方法对1千万条分成若干组进行边扫描边建散列表.第一次扫描,取首字节,尾字节,中间随便两字节作为Hash Code,插入到hash table中.并记录其地址和信息长度和重复次数,1千万条信息,记录这几个信息还放得下.同Hash Code且等长就疑似相同,比较一下.相同记录只加1次进hash table,但将重复次数加1.一次扫描以后,已经记录各自的重复次数,进行第二次hash table的

《Java程序员面试宝典》学习笔记(设计模式部分)

UML图: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的功能:实现是类与接口之间最常见的关系:在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性:  依赖 可以简单的理解,就是一个类A使用到了另一个类B

《Java程序员面试宝典》读书笔记1

今天读书发现一个很有趣的问题 请问以下程序会输出什么? public   class   Test2   {  public   static   void   main(String[]   args)   {  int   j   =   0;  for   (int   i   =   0;   i   <   100;   i++)   {  j   =   j++;  }  System.out.println(j);  }  } 输出的结果是:0 刚看到的时候觉得很不可思议,我选的答