博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java面试题之七 (转)
阅读量:6832 次
发布时间:2019-06-26

本文共 2077 字,大约阅读时间需要 6 分钟。

hot3.png

三十四、编码转换,怎样实现将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串。

String a=new String("中".getBytes("gb2312"),"iso-8859-1");

String a=new String("中".getBytes("iso-8859-1"));

具体示例参考:

三十五、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

三十六、是否可以从一个static方法内部发出对非static方法的调用?

准确回答是不能直接调用。

因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象。比如你在main方法中直接去调用一个非static的方法,是不能通过编译的。但是你如果在静态方法中,先去实例化一个对象,然后在调用其方法是可以的。

三十七、写clone()方法时,通常都有一行代码,是什么?

super.clone(); Clone 有缺省行为,他负责产生正确大小的空间,并逐位复制。(首先要把父类中的成员复制到位,然后才是复制自己的成员)。

三十八、Collection和Collections的区别

1.Collection是集合的根接口,其下有set 及list,关于set和list前面已详细介绍过。

2.Collections是针对集合类的一个帮助类,他提供一系列实现对各种集合的搜索、排序、线程安全化等操作。

三十九、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用。

Set集合元素不可重复,比较元素是否相等,要重写equals和hashcode 。

在比较时先调用hashCode方法,如果不相同,证明不相等;如果相同,再调用equals方法,如果equals方法相同,证明相等;不相同,证明不相等。

也就是说只有调用hashCode和equals都相等的情况下,才相等。其余均不相等。

至于equals()和==区别前面已经详细介绍过。

Contains用来判断集合中是否包含某个元素。

四十、用java 代码编写栈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
packagecom.lovo;
 
publicclassStack {
    int[] data;
    intmaxSize;
    inttop;
 
    publicStack(intmaxSize) {
        this.maxSize = maxSize;
        data =newint[maxSize];
        top = -1;
    }
 
    /**
     * 依次加入数据
     *
     * data
     *            要加入的数据
     * 添加是否成功
     */
    publicbooleanpush(intdata) {
        if(top +1== maxSize) {
            System.out.println("栈已满!");
            returnfalse;
        }
        this.data[++top] = data;
        returntrue;
    }
 
    /**
     * 从栈中取出数据
     *
     * 取出的数据
     */
    publicintpop()throwsException {
        if(top == -1) {
            thrownewException("栈已空!");
        }
        returnthis.data[top--];
    }
 
    publicstaticvoidmain(String[] args)throwsException {
        Stack stack =newStack(1000);
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);
        while(stack.top >=0) {
            System.out.println(stack.pop());
        }
    }
}

转载于:https://my.oschina.net/u/204616/blog/548123

你可能感兴趣的文章
1 mysql索引的实现原理
查看>>
相对和绝对路径 、 cd命令 、创建和删除目录mkdir/rmdir 、 rm命令
查看>>
静态文件过期缓存、Nginx防盗链、访问控制
查看>>
解决Spring扫描实体映射文件报错的问题
查看>>
ConcurrentModificationException
查看>>
webpack-dev-server启动后, localhost:8080返回index.html的原理
查看>>
cookie是什么?作用?生命周期?
查看>>
6月20日任务 mysql用户管理 、常用sql语句、mysql数据库备份恢复
查看>>
阿里工程师开发了一款免费工具,提升Kubernetes应用开发效率
查看>>
MySQL 24小时入门笔记(1),概念
查看>>
Data Lake Analytics IP白名单设置攻略
查看>>
使用无界队列的线程池会导致内存飙升吗?
查看>>
vue.js响应式原理解析与实现—实现v-model与{{}}指令
查看>>
详解深度学习之经典网络架构——LeNet
查看>>
推荐一款超级好用的AI模型训练平台——Tesra超算网络!
查看>>
hadoop任务map将其输入写入本地硬盘,而非hdfs,为什么
查看>>
linux上运行最简单的java程序
查看>>
深度辨析 Python 的 eval() 与 exec()
查看>>
20190601预习和课堂笔记
查看>>
通过自定义SparkSQL外部数据源实现SparkSQL读取HBase
查看>>