• char型变量中能不能存贮一个中文汉字?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

  • "=="和equals方法有什么区别?

(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

“==”比较两个变量本身的值,即两个对象在内存中的首地址。

“equals()”比较字符串中所包含的内容是否相同。

String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");

那么:

s1==s2      是 false      //两个变量的内存地址不一样,也就是说它们指向的对象不一样,故不相等。
s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。

注意:

StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");

结果:

s1.equals(s2) //是false

解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,而Object类中的equals方法是用来比较“地址”的,所以等于false.

对于s3和s4来说,有一点不一样要引起注意,由于s3和s4是两个字符串常量所生成的变量,其中所存放的内存地址是相等的,所以s3==s4是true(即使没有s3=s4这样一个赋值语句)

(2)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。

对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。

Integer n1 = new Integer(30);
Integer n2 = new Integer(30);
Integer n3 = new Integer(31);
System.out.println(n1 == n2);//结果是false 两个不同的Integer对象,故其地址不同,
System.out.println(n1 == n3);//那么不管是new Integer(30)还是new Integer(31) 结果都显示false
System.out.println(n1.equals(n2));//结果是true 根据jdk文档中的说明,n1与n2指向的对象中的内容是相等的,都是30,故equals比较后结果是true
System.out.println(n1.equals(n3));//结果是false 因对象内容不一样,一个是30一个是31

(3)如果是基本类型比较,那么只能用==来比较,不能用equals。

  • Anonymous Inner Class (匿名内部类)是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接口)?

可以继承其他类或实现其他接口。

  • String 和 StringBuffer 的区别

这个 String 类提供了数值不可改变的字符串。而这个 StringBuffer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用 StringBuffer。典型地,你可以使用 StringBuffers 来动态构造字符数据。

另外,String 实现了 equals 方法,new String(“abc”).equals(newString(“abc”)的结果为 true,而 StringBuffer 没有实现equals 方法,所以,new StringBuffer(“abc”).equals(newStringBuffer(“abc”)的结果为 false。

String 覆盖了 equals 方法和 hashCode 方法,而 StringBuffer 没有覆盖 equals 方法和hashCode 方法,所以,将 StringBuffer 对象存储进 Java 集合类中时会出现问题。

  • java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 suspend()方法为何不推荐使用?
new Thread(){
public void run(){
}
}.start();

这表示调用 Thread 子类对象的 run 方法,new Thread(){}表示一个Thread 的匿名子类的实例对象。

new Thread(new Runnable(){
public voidrun(){
}
}
).start();

这表示调用Thread对象接受的Runnable对象的run方法,new Runnable(){}表示一个 Runnable 的匿名子类的实例对象。

ExecutorService pool = Executors.newFixedThreadPool(3)
for(int i=0;i<10;i++)
{
pool.execute(newRunable(){public void run(){}});
}
Executors.newCachedThreadPool().execute(new Runable(){publicvoid run(){}});
Executors.newSingleThreadExecutor().execute(new Runable(){publicvoid run(){}});

有两种实现方法,分别使用 new Thread()和 new Thread(runnable)形式,第一种直接调用thread 的 run 方法,所以,我们往往使用 Thread 子类,即 new SubThread()。第二种调用runnable 的 run 方法。有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口

实现同步也有两种,一种是用同步方法,一种是用同步块.. 同步方法就是在方法返回类型后面加上synchronized, 比如:

public void synchronized add(){...}

同步块就是直接写:

synchronized (这里写需要同步的对象){...}

反对使用 stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。

suspend()方法容易发生死锁。调用 suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用 suspend(),而应在自己的 Thread 类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用 wait()命其进入等待状态。若标志指出线程应当恢复,则用一个 notify()重新启动线程。

  • 同步和异步有何异同,在什么情况下分别使用他们?

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

  • 多线程有几种实现方法?同步有几种实现方法?

多线程

1. 继承 Thread 类

2. 实现 Runnable 接口再 new Thread(YourRunnableOjbect) 推荐

线程同步

1. 用 synchronized 修饰需要同步的方法

2. 用 synchronized 块包围需要同步的语句

3. 使用 java.util.concurrent 包中的各种同步锁 (比如wait()和notify())

  • Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是 equals()?它们有何区别?

Set 里的元素是不能重复的,元素重复与否是使用 equals()方法进行判断的。equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

我是天王盖地虎的分割线                                                                 

参考:http://blog.csdn.net/fmh2011/article/details/19690999

java笔试题(1)的更多相关文章

  1. java笔试题13-11-21

    中xxx科技公司java笔试题 今天去参加一个公司的面试,去先做了一份笔试题,妈的,太他妈难了(对于我来说,最后做完一个员工说你是不是投错简历了,都是空白,我说我做的大部分都对了..最后面试都没有,就 ...

  2. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络         投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文“2016最新Java笔试题集锦”,供大家阅读参考, ...

  3. 华为Java笔试题

    华为Java笔试题+数据库题 一. 单项选择题 1.Java是从( )语言改进重新设计. A.Ada B.C++ C.Pasacal D.BASIC 2.下列语句哪一个正确( ) A. Java程序经 ...

  4. Java笔试题集锦

    Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?怎样实现? 答:MVC是Model-View-Controller的简写."Model" 代表的是应用的业务逻辑(通过J ...

  5. java面试题—精选30道Java笔试题解答(二)

    摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...

  6. 北京Java笔试题整理

    北京Java笔试题整理 1.什么是java虚拟机?为什么ava被称作是"平台无关的编程语言? 答:Java虚拟机可以理解为一个特殊的"操作系统",只是它连接的不是硬件,而 ...

  7. 【笔试题】精选30道Java笔试题解答

    转自于:精选30道Java笔试题解答 精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A. start() B. run() C. exit() D. getPriority( ...

  8. 精选30道Java笔试题附答案分析

    精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...

  9. 分享一套高级Java笔试题(实拍高清图)

    分享一套高级Java笔试题 微信群里群友分享的 刚好他在笔试 有些问题不会发到群里求助 如果你最近正好在面试 需要参考需要提升 这套试题或许对你有用 下面是部分分享原图 下面是微信群中群友的热议 非常 ...

  10. 汉王JAVA笔试题

    汉王JAVA笔试题 1,jsp中动态include与静态include的区别? (1)动态包含总是会检查文件中的变化,适合用于包含动态页面,并且可以带参数. (2)静态包含不会检查所含文件的变化,适用 ...

随机推荐

  1. HttpClient入门

    HttpClient入门 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 H ...

  2. SQL笔记-第一章,数据库入门

    DBMS的分类DB2.Oracle.Microsoft SQL Server.Sybase SQLServer.Informix.MySQL数据库的结构元素库 database表 table列 col ...

  3. Java SE技术概览 - Jave SE Platform at a Glance

    从学习到工作,使用Java有几年时间,一直没有好好端详一下她的“内涵”.无意中看到一个关于Java SE的概览图,发现Java中提供的API还挺系统全面,把她放到博客中,相信对于想系统了解Java技术 ...

  4. C# 随机颜色的方法

    public string GetRandomColor() { Random RandomNum_First = new Random((int)DateTime.Now.Ticks); // 对于 ...

  5. (转)Android属性设置android:noHistory="true"

    设置 android:noHistory="true"后,该Activity在statck中不留历史痕迹.默认的值是false. 举例说明,假设有三个Activity分别是:A,B ...

  6. 2)main函数在执行前和执行后有哪些操作

    main函数执行之前,主要就是初始化系统相关资源:      1. 设置栈指针      2. 初始化static静态和global全局变量,即data段的内容      3. 将未初始化部分的全局变 ...

  7. WCF 内存入口检查失败

    WCF 内存入口检查失败 Memory gates checking failed   异常信息:内存入口检查失败,因为可用内存(xxx 字节)少于总内存的 xx%.因此,该服务不可用于传入的请求.若 ...

  8. PuTTY 中文教程

    PuTTY 中文教程 更新记录 2006-11-29初步完成想写的这些东西 2007-06-11PuTTY 的最新版本到了0.6:修改了一下 SSH 隧道:添加了 SSH 反向隧道:添加了用 SSH ...

  9. rails 学习笔记

    bundle package   #保存gem到 vendor/cache bundle install –local  从cache从安装 升级rails bundle config –delete ...

  10. openSUSE13.1安装搜狗输入法 for Linux

    一句话总结:爽死我了!什么叫输入的快感终于体会到了,搜狗输入法,码农的好伙伴!!! 转自openSUSE论坛 女王陛下 https://forum.suse.org.cn/viewtopic.php? ...