可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
java 中的保留字,现在没有在 java 中使用。
在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环。例如,
- ok:for(inti=0;i<10;i++) {for(intj=0;j<10;j++){
- System.out.println("i=" + i + ",j=" + j);if(j ==5)breakok;
- }
- }
另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
- int arr[][] = {
- {
- 1,
- 2,
- 3
- },
- {
- 4,
- 5,
- 6,
- 7
- },
- {
- 9
- }
- };
- boolean found = false;
- for (int i = 0; ilength && !found; i++) {
- for (int j = 0; jlength; j++) {
- System.out.println("i = " + i + ", j = " + j);
- if (arr[i][j] == 5) {
- found = true;
- break;
- }
- }
- }
对于
short s1 = 1;
s1 = s1 + 1;
由于 s1+1 运算时会自动提升表达式的类型,所以结果是 int 型,再赋值给 short 类型 s1 时,编译器将报告需要强制转换类型的错误。
对于
short s1 = 1;
s1 += 1;
由于 += 是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此可以正确编译。
char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量中当然可以存储汉字啦。
不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集中,那么,这个 char 型变量中就不能存储这个特殊汉字。
补充说明:unicode 编码占用两个字节,所以,char 类型的变量也是占用两个字节。
备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。
2 << 3
因为将一个数左移 n 位,就相当于乘以了 2 的 n 次方,那么,一个数乘以 8 只要将其左移 3 位即可,而位运算 cpu 直接支持的,效率最高,所以,2 乘以 8 等於几的最效率的方法是 2 << 3。
首先要明白这道题目的考查点是什么 - 一是大家首先要对计算机原理的底层细节要清楚、要知道加减法的位运算原理和知道计算机中的算术运算会发生越界的情况
先不考虑 long 类型,由于 int 的正数范围为 2 的 31 次方,表示的最大数值约等于 2*1000*1000*1000,也就是 20 亿的大小,所以,要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数,并且提供了与另外一个整数进行加减乘除的功能,大概功能如下:
- int a = Integer.MAX_VALUE;
- int b = Integer.MAX_VALUE;
- int sum = a + b;
- System.out.println("a="+a+",b="+b+",sum="+sum);
-()这个类内部有两个成员变量,一个表示符号 ,另一个用字节数组表示数值的二进制数
- public classBigInteger{intsign;byte[] val;public Biginteger(String val) {
- sign = ;
- val = ;
- }publicBigIntegeradd(BigInteger other) {
- }publicBigIntegersubtract(BigInteger other) {
- }publicBigIntegermultiply(BigInteger other){
- }publicBigIntegerdivide(BigInteger other){
- }
- }
备注:要想写出这个类的完整代码,是非常复杂的,如果有兴趣的话,可以参看 jdk 中自带的 java.math.BigInteger 类的源码。
面试的人也知道谁都不可能在短时间内写出这个类的完整代码的,他要的是你是否有这方面的概念和意识,他最重要的还是考查你的能力,所以,你不要因为自己无法写出完整的最终结果就放弃答这道题,你要做的就是你比别人写得多,证明你比别人强,你有这方面的思想意识就可以了,毕竟别人可能连题目的意思都看不懂,什么都没写,你要敢于答这道题,即使只答了一部分,那也与那些什么都不懂的人区别出来,拉开了距离,算是矮子中的高个,机会当然就属于你了。
另外,答案中的框架代码也很重要,体现了一些面向对象设计的功底,特别是其中的方法命名很专业,用的英文单词很精准,这也是能力、经验、专业性、英语水平等多个方面的体现,会给人留下很好的印象,在编程能力和其他方面条件差不多的情况下,英语好除了可以使你获得更多机会外,薪水可以高出一千元。
有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:
public void method(final StringBuffer>param){ }
实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:
- param.append("a");
(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)
equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo"); String b=new String("foo"); 两条 new 语句创建了两个对象,然后用 a,b 这两个变量分别指向了其中一个对象
这是两个不同的对象,它们的首地址是不同的,即 a 和 b 中存储的数值是不相同的,所以,表达式 a==b 将返回 false,而这两个对象中的内容是相同的,所以,表达式 a.equals(b) 将返回 true。
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,
String input = …;input.equals("quit"),许多人稍不注意就使用 == 进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。
- 记住,字符串的比较基本上都是使用equals方法。
如果一个类没有自己定义 equals 方法,那么它将继承 Object 类的 equals 方法,Object 类的 equals 方法的实现代码如下: boolean equals(Object o){return this==o;} 这说明,如果一个类没有自己定义 equals 方法,它默认的 equals 方法(从 Object 类继承的)就是使用 == 操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用 equals 和使用 == 会得到同样的结果
如果比较的是两个独立的对象则总返回 false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖 equals 方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。
在语法定义上的区别:
静态变量前要加 static 关键字,而实例变量前则不加。
在程序运行时的区别:
- public classVariantTest{public static intstaticVar =0;public intinstanceVar =0;public VariantTest(){
- staticVar++;
- instanceVar++;
- System.out.println("staticVar=" + staticVar + ",instanceVar=" + instanceVar);
- }
- }
备注:这个解答除了说清楚两者的区别外,最后还用一个具体的应用例子来说明两者的差异,体现了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力!
不可以。
Math 类中提供了三个与取整有关的方法: - ceil、 - floor - round
这些方法的作用与它们的英文名称的含义相对应,例如,ceil 的英文意义是天花板,该方法就表示向上取整
- ,Math.ceil(11.3)
的结果为 12,Math.ceil(-11.3) 的结果是 - 11;floor 的英文意义是地板,该方法就表示向下取整,
- Math.ceil(11.6)
的结果为 11,Math.ceil(-11.6) 的结果是 - 12;最难掌握的是 round 方法,它表示 "四舍五入",算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,
- Math.round(11.5)
的结果为 12,
- Math.round(-11.5)
的结果为 - 11。 如果你觉得此文对您有所帮助,欢迎入群 QQ 交流群 :232203809 微信公众号:终端研发部
(欢迎关注学习和交流)
来源: http://blog.csdn.net/androidstarjack/article/details/70555548