每天一道Java题[4]】的更多相关文章

问题 为什么在重写equals()方法的同时,必须重写hashCode()方法? 解答 在<每天一道Java题[2]>中,已经对hashCode()能否判断两个对象是否相等做出了解释.equals()方法与hashCode()方法的关系如下: 如果两个对象的hashCode()返回值不一样,则equals()返回的结果必为false. 如果两个对象的hashCode()返回值一样的时候,equals()返回的结果未知. 如果两个对象的equals()返回的结果为true,则两个对象的hashC…
题目 synchronized怎么实现线程同步?请修改<每天一道Java题[10]>中的MyRunnableThread类以解决三个线程都获取到10的问题. 解答 方法一: 采用synchronized关键字包裹需要保证线程安全的代码块,来实现线程同步.语法格式为: Synchronized(expression){ //需同步的代码 } <每天一道Java题[10]>中的MyRunnableThread类修改为: package me.huangzijian; public cl…
问题 怎么将字符串转换为int? 解答 此题看似简单,但经常出现在笔试等地方,由于大家习惯了用IDE,有什么还真未必能写出来.通常都是parseInt()方法进行转换,如下: Int n = Integer.parseInt("123"); 发散思考 1.除了parseInt()方法外,还有什么其它方法可以让String转换为int吗?float.double.long.short那些又是怎么从String转换的? 解答:除了parseInt()方法以外,还可以用valueOf()方法…
题目 String字符串怎么转换为Date,Date又怎么转换成String字符串 解答 String->Date 主要用到类SimpleDateFormat及其抽象父类DateFormat中的方法parse(). 如下: String dateStr = "2017-05-18 16:00:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date =…
题目 native关键字的作用是什么? 解答 首先,需了解JNI(Java Native Interface),它是连接Java平台与本地C代码的一个API. 其次,用native关键字声明的方法,是告诉JVM调用的方法是一个外部定义的方法,也就是本地C代码定义的一个方法. 总结来说,native关键字的具体作用是,用它声明的方法,并不需要Java代码自己实现.而是JVM通过JNI来加载本地系统C/C++的DLL,然后调用其中的方法来实现. 发散思维 1.说一下,我们平时用到的哪个方法,是用na…
问题:char[]与String相比,有什么优胜的地方? 回答: 针对安全保密高的信息,char[]比String做得更好.因为String是不可变得,即使你修改原先的变量,实际上也是在内存中新建一个对象,原数据还是保留在内存中,等待回收.而char[]中的元素是可以更改的.这就意味着,如密码等保密信息用完之后,你可以马上修改它而不能痕迹.从而相对于String有更好的安全性.可从下面例子中看出,char[]变更内容后,仍是那个对象.而String已经不是原来的String了. 引用: 这个对比…
问题 可以直接根据hashCode()方法产生的值判断两个对象是否相等吗? 解答 不能!根据Wikipedia(https://en.wikipedia.org/wiki/Java_hashCode())上对hashCode()方法的解释,它会根据这个对象内存储的数据及对象的一些特征来做散列,并返回一个有符号的32位哈希值.从这解释我们就可以看到,hashCode()方法返回的是一个散列值,而对于一个散列来说,不同的内容也是可能会出现相同的散列值的.所以即使两个对象的hashCode()返回的值…
题目 String.StringBuilder.StringBuffer有什么异同? 解答 相同点:String.StringBuilder.StringBuffer都可以用来存储字符串. 不同点: 1.String与StringBuilder.StringBuffer的不同点主要在于,String对象创建之后,是不可改变的,平时我们对同一个String变量赋值,实际上是创建了个新的对象.而后两者是可变的,这意思就是说,他们可以在同一内存地址上更改它的值,而无需创建新的对象. 2.StringB…
题目 什么是REST原则,请解释RESTful架构,以及其设计思想? 解答 REST,全称为Representation State Transfer,是一种互联网软件的架构原则.凡是满足REST原则的,我们都称它为RESTful架构. 对RESTful架构的理解,有以下几点: 资源,网络上的一个实体,或者是一个具体的信息.通常使用一个URI来表示一种资源. Representation,可理解为资源的表现层,资源的具体表现形式.在http请求的头信息Accept和Content-Type字段指…
题目 阐述创建线程最常用的两种方法及其对比. 解答 方法一:继承Thread类实现 步骤: 创建Thread类的子类,如MyThread. 重写Thread类的run()方法. 实例化MyThread类,对象名如myThread. 运用Thread类的start()方法启动线程,如myThread.start(). 方法二:实现Runnable接口 步骤: 创建一个类,如MyRunnableThread,实现Runnable接口. 创建MyRunnableThread类的对象. 实例化Threa…
以下题目及解答属于个人见解,欢迎大家也分享和补充一下解答的内容,互相促进,共同进步! 题目 RESTful WebService与SOAP WebService有什么异同? 解答 SOAP是一个协议,而REST实际上是一个互联网软件的架构原则,并不是一个协议.它更像是对Http协议的设计初衷作诠释. SOAP发展到现在,相对REST来说,已经有相当的成熟度. SOAP WebService对于消息体.消息头等内容有统一的规范,通用性相对更强.而RESTful WebSerivce实际上只是一个设…
最近在面试中遇到这样的一道算法题:       求100!的结果的各位数之和为多少?       如:5!=5*4*3*2*1=120,那么他们的和为1+2+0=3这道题不算难,不过倒是注意的细节也有一些:1.数据的越界问题 如果求的是171的阶乘的话,就会超出double类型的存储范围,这时候就要处理了,不然得到的结果是:Infinity1.可以通过java的BigInteger类来进行处理:2.可以将结果中的每一位数存在一个int类型的数组中,不过这个方法还没有想出来 代码如下: packa…
Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 有一天人诹Lee在随手帮女神做题,突然女神发现了自己演算纸上的一个式子,但是式子只有两个加数却没有结果,最近在学不同进制加减法的女神忘了这个两个数字是多少进制了(只记得是小于等于1010),但是她很好奇在可能的多少进制下这个式子得到的答案长度最长,为了从人赢Lee手中抢走女神,你需要快速…
一道大水题 时间限制: C/C++ 2000ms; Java 4000ms 内存限制: 65535KB 通过次数: 44 总提交次数: 1020 问题描述 Dr. Pan作为上兰帝国ACM的总负责人,对队员的队员的训练也是日常关心,他要求每周要有一位队员出一道题目.不知过了多少年,终于轮到Shiyiliang出题了,他费尽脑汁,终于出了一道大水题 给定一个偶数n,n的取值范围为[-1e18,1e18],要求一对整数x,y满足以下条件: 1.x*y==n 2.x与n必须同号,即如果n>0则x>0…
有关Java虚拟机类加载机制相关的文章一搜一大把,笔者这儿也不必再赘述一遍了.笔者这儿捞出一道code题要各位大佬来把玩把玩,假定你一眼就看出了端倪,那么祝贺你,你可以下山了:​ public class StaticTest {    public static void main(String[] args)    {        staticFunction();    }    static StaticTest st = new StaticTest();    static    …
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + 2 == Number.MAX_VALUE; ... Number.MAX_VALUE + x == Number.MAX_VALUE; Number.MAX_VALUE + x + 1 == Infinity; ... Number.MAX_VALUE + Number.MAX_VALUE ==…
<script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; alert(this.a); } } var tt = new test(); tt.func(); setTimeout(tt.func, 1000); </script> 这是之前看到的一道js题,其中有a出现了五次,那么到底输出什么呢,我想看了我上一个随笔你应该就明白了. 这个题主要考察两个…
一道水题时间限制:1000 ms  |  内存限制:65535 KB 难度:2描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他吗?这个游戏是这样的:有一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0).你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出,大家赶紧写个程…
在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建树,画图,最短路径什么的,统统不需要.废话不多说,直接看题: 1.例题精讲 T1: 1348:[例4-9]城市公交网建设问题 时间限制: 1000 ms         内存限制: 65536 KB提交数: 2094     通过数: 650 [题目描述] 有一张城市地图,图中的顶点为城市,无向边代…
这是一道水题,实际考察的是你会不会写强连通分量...(在BZOJ上又水了一道题) Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎.你的任务是求出有多少头 牛被所有的牛认为是受欢迎的. Input 第一行两个数N,M. 接下来M行,每行两个数A,B,意思是A认为B是受欢迎的(给出的信息有可能重复,即有可 能出现多个A,B) Outp…
1.思路 假设链表......---A--B--C--D....,要删除B.一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n).删除节点的实质为更改后驱指针指向.这里,复制C的内容至B(此时B,C同时指向D),删除节点C,即达到间接删除节点B的目的. 倘若B是链尾节点.则需要线性遍历寻找前驱节点. 以上思路,时间复杂度为O(1). 2.代码 struct ListNode { int m_nKey; ListNode* m_pNext; }; void DeleteNode(ListN…
1785: 又一道简单题 Submit Page   Summary   Time Limit: 5 Sec     Memory Limit: 128 Mb     Submitted: 602     Solved: 234 Description 输入一个四个数字组成的整数 n,你的任务是数一数有多少种方法,恰好修改一个数字,把它 变成一个完全平方数(不能把首位修改成 0).比如 n=7844,有两种方法:3844=62^2和 7744=88^2. Input 输入第一行为整数 T (1<…
                                                    Crazy Search 真是不容易啊,人生第一道hash题竟然是搜博客看题解来的. 题意:给你一个包含m种字符的字符串,求长度为n的不同子串有多少个. 将每个字串化为一个具体的数然后存入数组标记即可,如果重复出现肯定不用再加了.那么怎么化为一个数呢,这里用的方法是先将每个字符对应一个数,然后每个长度为n的子串就有了一个连续的数,将这个数段转化为m进制下的数即可,时间复杂度是O(len).注意…
一道水题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他吗?这个游戏是这样的:有一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由若干个'0'组成的,这时这个整数就是0). 你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出,大家赶紧…
二次联通门 : LibreOJ #6165. 一道水题 /* LibreOJ #6165. 一道水题 欧拉线性筛 其实题意就是求区间[1, n]所有数的最小公倍数 那么答案就是所有质因子最大幂次的乘积 水题开心.. */ #include <cstdio> #include <iostream> #define Max 100000290 int prime[Max], Count; bool is_prime[Max]; long long Euler_Line_Sieve (c…
这是一个源自知乎的话题,原贴链接:一道百度的面试题,有大神会嘛? 虽然我不是大神,但我也点进去看了一下,思考了一会之后有了一些思路,然后去看其它人的答案的时候果然全都已经被各路大神们先想到并贴出来了,所以我就不去凑热闹写重复答案了,整理一下网友们的智慧在这里自娱自乐好了. 题目 思路一 作为一个多年前也见过不少笔试题的少年,看到这个题目的第一想法是脑筋急转弯——注入一段逻辑直接改变原 if 结构. 解法一 填入内容 true){System.out.print("a");}if(fal…
题目描述 这是2021广联达校招提前批笔试算法题之一. 我们希望一个序列中的元素是各不相同的,但是理想和显示往往是有差距的.现在给出一个序列A,其中难免有相同的元素,现在提供了一种变化方式,使得经过若干次操作后一定可以得到一个元素各不相同的序列. 这个操作是这样的,令x为序列中最小的重复数字,你需要删除序列左数第一个x,并把第二个x替换为2*x.请你输出最终的序列. 例如原序列是[2,2,1,1,1],一次变换后变为[2,2,2,1],两次变换后变为[4,2,1],变换结束. 输入描述 输入第一…
问题:某班30个学生的学号为20070301-20070330,全部选修了Java程序设计课程,给出所有同学的成绩(可用随机数产生,范围60-100),请编写程序将本班各位同学的成绩按照从低到高排序打印输出.      要求:分别用List.Map.Set来实现,打印的信息包括学号.姓名和成绩. 1.使用List集合来实现 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;…
524. 通过删除字母匹配到字典里最长单词 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到.如果答案不止一个,返回长度最长且字典顺序最小的字符串.如果答案不存在,则返回空字符串. 示例 1: 输入: s = "abpcplea", d = ["ale","apple","monkey","plea"] 输出: "apple" 示例…
12个人围成一圈,序号依次从1至12,从序号1开始顺时针依次数,数到7的人退出,下一个再依次从1开始数,求留下来的最后一个人的原始序号. public static void joseph(int[] array,int n) { for (int i = 0; i < array.length; i++) { array[i] = i+1; } // 计数器 int counter = 0; // 剩余人数 int leftCount = array.length; // 索引 int ind…