关于JAVA Calendar类bug的问题?(java Calendar类中的getTimeInMillis 有什么用)
- java Calendar类中的getTimeInMillis 有什么用
- 有关java的awt包中的setActionCommand方法的问题
- 面试中被问到你遇到的java编程中的bug你如何解决的
- 一个关于Java中的getChars()方法的问题
java Calendar类中的getTimeInMillis 有什么用
java.util.Calendar.getTimeInMillis() 方法返回此Calendar以毫秒为单位的时间。
举例:
Calendar cal = Calendar.getInstance();//创建一个日期的实例
System.out.println("Current time is : " + cal.getTimeInMillis());//获取到日期的毫秒显示形式
输出结果:Current time is : 1336226501635。
备注:这种类型多用在时间的比较上。
有关java的awt包中的setActionCommand方法的问题
Java中 Swing 包中的 setActionCommand(String ActionCommand)
就是给一个JButton设置一个属性的字符串值,然后通过在actionPerformed(ActionEvent e)方法里通过if(e.getActioncommand.equals("改变"))判断哪个按钮发生了事件。
当然也可以直接e.getActioncommand.equals("改变图形")来进行判断
但是当你有两个按钮或者多个按钮的属性名称相同时,就需要给每个按钮另外设置一个属性的字符串的值来进行判断你究竟选择的是哪个按钮。
就要用到setActioncommand();
例如
设置此组件激发的操作事件的命令名称。
JButton btnShow = new JButton();
btnShow.setActionCommand("show");
当这个按钮被点击的时候,你就可以用
ActionEvent 的 getActionCommand().equals("show")
去比较触发事件的是不是这个按钮
面试中被问到你遇到的java编程中的bug你如何解决的
首先,要认识 bug。
如果一个程序做了它不应该做的事,或者没有做它应该做的事,那就是 bug。bug 很难避免,尤其在规模化的编程过程中。
我们知道从面向过程的角度来说,一个程序是由数据结构和算法构成的,从面向对象的角度来说,程序可以是由类和对象组成的。因此 bug 我这里分成两类:
在一个 Java 程序中,类和对象的关系可能会造成 bug。这是设计时的问题,例如多实例的同步问题、线程冲突和死锁问题,这是常见的两个潜在的 bug。要尽量避免这类 bug,只能在设计时下功夫。思路一定要清晰,一定要清楚每个类要做些什么,什么时候该做些什么。这类 bug 比较容易发现,但是不易修补,因为牵扯到程序的不同部分,有时候相当麻烦,因此最好一开始就不要让它出现。
然后一些细节上的 bug,属于逻辑漏洞,可能是算法上的漏洞。Java 其实这方面要比 C/C++ 安全,因为后者的某些漏洞是致命的,例如内存泄露、指针冲突、野指针等一系列问题,可能直接导致程序崩溃,但是 Java 绝对不会出现指针问题,内存相对安全。但是 Java 也可能导致内存不断消耗,最终崩溃的情况也是有的。这个问题我也碰到过几次了,如何解决?需要你对你大量使用的类非常熟悉,最好事先仔细看看文档,有的类需要你最后 dispose 的,有的类 add 过后需要 remove 的,有的类的某些方法会间接地创造一些对象。这种 bug 不大容易发现,尤其是我们有时候对 JVM 的绝对信任而忽略了这些细节,甚至造成了不好的习惯。要么不碍事,要么很严重,一但出现问题可能会发现同样的问题几乎出现在所有的地方。所以避免这类 bug 只有谨慎,并且要养长良好的习惯。
顺便说一句,Java 内存溢出后程序就直接退出,可能会导致数据丢失之类的,这个责任担当不起的。
然后逻辑漏洞还没讲完,还有一些和内存无关,但是也是逻辑上的疏忽造成的,例如数组越界、空栈、格式不兼容等等。这些相当难发现,有时候是正常的,有时候就报错了。这个可以说是最普遍的漏洞,也是最难发现的漏洞。这类漏洞要看程序员的水平,经验丰富、思维清晰、反应敏捷、习惯良好的程序员会好一点,但是不是所有的程序员都是这样的,再说人无完人,再怎么水平高也难免犯点小错嘛。这种漏洞基本都是在后期测试(传说中的内测)和已发布的测试版中逐渐被发现。为了尽量早发现,内部的测试要做的好,不过首先负责各个部分的程序员之间要定下默契,程序要符合规范,类和方法尽量简单化,不要一个方法出现 4 个以上的参数,因为那样会巨大的增加测试的麻烦。要写好注释,变量名写完整,等等规范就不一一列举了。然后对测试人员的要求也是比较高的,测试人员必须熟练掌握测试技巧,有的团队这些小 bug 的修复也是测试人员做的,那测试人员也要良好掌握调试技巧,团队内人员要保持良好的沟通。
一个关于Java中的getChars()方法的问题
getChars
public void getChars(int srcBegin,
int srcEnd,
char[] dst,
int dstBegin)将字符从此字符串复制到目标字符数组。
要复制的第一个字符在索引 srcBegin 处;要复制的最后一个字符在索引 srcEnd-1 处(因此要复制的字符总数是 srcEnd-srcBegin)。要复制到 dst 子数组的字符从索引 dstBegin 处开始,并结束于索引:
dstbegin + (srcEnd-srcBegin) - 1
参数:
0 srcBegin - 字符串中要复制的第一个字符的索引。
5 srcEnd - 字符串中要复制的最后一个字符之后的索引。
charArray dst - 目标数组。
0 dstBegin - 目标数组中的起始偏移量