标签:case 面试题 Java System break 编译 println out
1. 在switch和if-else语句之间进行选取,当控制选择的条件不仅仅依赖于一个x时,应该使用switch结构;正确么?
不正确。
通常情况下,进行比较判断的处理,switch 和if-else可以互相转换来写;if-else作用的范围比switch-case作用范围要大,但是当switch-case和if-else都可以用的情况下,通常推荐使用switch-case。
比如:
public static void main(String[] args) {
char ch = 'a';
switch (ch) {
case 'a':
System.out.println("A");
break;
case 'b':
System.out.println("B");
break;
case 'c':
System.out.println("C");
break;
case 'd':
System.out.println("D");
break;
case 'e':
System.out.println("E");
break;
default:
System.out.println("other");
break;
}
换为if-else
public static void main(String[] args) {
char ch = 'a';
if (ch == 'a') {
System.out.println("A");
} else if (ch == 'b') {
System.out.println('B');
} else if (ch == 'c') {
System.out.println("C");
} else if (ch == 'd') {
System.out.println("D");
} else if (ch == 'e') {
System.out.println("E");
} else {
System.out.println("Other");
}
2.使用final关键字修饰符一个变量时,是引用不能变,还是引用的对象不能变?
final修饰基本类型变量,其值不能改变。
但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变。
public class Test {
public static void main(String[] args) {
final Dog dog = new Dog("狗子");
dog.name = "泰迪";//正确
dog = new Dog("田园犬");//错误
}
}
3.请解释以下常用正则含义:\d,\D,\s,.,*,?,|,[0-9]{6},\d+
\d | 匹配一个数字字符。等价于[0-9] |
\D | 匹配一个非数字字符。等价于^ [0-9] |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] |
. | 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . |
* | 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 * |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 + |
| | 将两个匹配条件进行逻辑“或”(Or)运算 |
[0-9]{6} | 匹配连续6个0-9之间的数字 |
\d+ | 匹配至少一个0-9之间的数字 |
4.给定某java程序片段,该程序运行后,j的输出结果为()
public class Test {
public static void main(String[] args) {
int i=1;
int j=i++; //2
// 2>3 ,不执行if
if ((j>++j)&&(i++==j)){
j+=i;
}
//输出j=2
System.out.println(j);
}
}
5.指出下列程序的运行结果
public class Test {
public static void main(String[] args) {
int i=9;
switch (i) {
default:
System.out.println("default");
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
}
}
}
输出结果 :
default zero
解析:因为选择了default执行,但是它居然没有break也就意味着它停不下来,它必须找到一个最近的一个break让它停下来
6.解释继承、重载、覆盖。
继承(英语:inheritance)是面向对象软件技术当中的一个概念。
如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。
继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。
在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。
另外,为子类别追加新的属性和方法也是常见的做法。
一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
那么如何使用继承呢?用extends关键字来继承父类。
如上面A类与B类,当写继承语句时, class A类 extends B类{ } 其中A类是子类,B类是父类。
英文 | 位置不同 | 作用不同 | |
重载 | overload | 同一个类 | 为方法提供多种实现方式 |
重写 | override | 子类与父类 | 父类的方法无法提供子类的要求,子类通过方法重写满足要求 |
修饰符 | 返回值 | 方法名 | 参数 | 抛出异常 | |
重载 | 无关 | 无关 | 相同 | 不同 | 无关 |
重写 | 大于等于 | 大于等于 | 相同 | 相同 | 小于等于 |
7. 什么是编译型语言,什么是解释型语言?java可以归类到那种?
计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行 高级语言所编写的程序。翻译的方式有两种,一个是编译,一个是解释。 用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统把高级语言翻译成机器语言,把源高级程 序编译成为机器语言文件,比如windows下的exe文件。以后就可以直接运行而不需要编译了,因为翻译只做了一 次,运行时不需要翻译,所以一般而言,编译型语言的程序执行效率高。 解释型语言在运行的时候才翻译,比如VB语言,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言, 每个语句都是执行时才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。 编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大 型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页 脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用 解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
JAVA语言是一种编译型-解释型语言,同时具备编译特性和解释特性(其实,确切的说java就是解释型语言,其所谓的编译过程只是将.java文件编程成平台无关的字节码.class文件,并不是向C一样编译成可执行的机器语言,在此请 读者注意Java中所谓的“编译”和传统的“编译”的区别)。作为编译型语言,JAVA程序要被统一编译成字节码文件—— 文件后缀是class。此种文件在java中又称为类文件。java类文件不能再计算机上直接执行,它需要被java虚拟机翻译 成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。java字节码文件首先被加载到计算机内存中, 然后读出一条指令,翻译一条指令,执行一条指令,该过程被称为java语言的解释执行,是由java虚拟机完成的。
8.try{}里面有一个return语句,那么紧跟在这个try后的finally, 里面的语句在异常出现后,都会执行么?为什么?
在异常处理时提供 finally 块来执行任何清除操作。
如果有finally的话,则不管是否发生异常,finally语句都会被执行,包括遇到return语句。
finally中语句不执行的唯一情况中执行了System.exit(0)语句
9.构造函数的描述
构造函数是类的一种特殊函数,它的方法名必须与类名相同
构造函数的主要作用是完成对类的对象的初始化工作
一般在创建新对象时,系统会自动调用构造函数
10.一个类的构造方法是否可以被重载(overloading),是否可以被子类重写 (overrding)?
构造方法可以被重载,但是构造方法不能被重写,子类也不能继承到父类的构造方法
若存在侵权,请联系,谢谢!
标签:case,面试题,Java,System,break,编译,println,out 来源: https://www.cnblogs.com/com-Jacob/p/16280264.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。