10.6考察自增自减、修饰符、类变量的调用、成员变量的调用、运算符的优先级、鲁棒性、异常总结

来源:互联网 发布:mac os最新版本是多少 编辑:程序博客网 时间:2024/06/03 19:58
1

以下代码执行的结果显示是多少()?


正确答案: 0

解释:考察两种自增运算符的区别。
  1. for循环外面count=0,循环里面的count=count++;(count的值都等于count值,而后面count自加不影响count结果,因此这个式子无意义);循环count都为0(因count++是先返回count的本身值再自加1的)!
  2. 若是改为count=++count;(先自加,再返回自加后的值),结果就是5050*101=510050了!
  3. 改为count++;结果就是5050*101=510050了!


2、已知有下列Test类的说明,则下列哪个语句是正确的?()
public class Test
{
private float f = 1.0f;
int m = 12;
static int n = 1;
public static void main (String args[])
{
Test t = new Test();
}
}

t.f;
this.n;
Test.m
Test.f
A的答案中变量虽然为private,但因为main函数在该类中,所以即使private也仍可使用,B的答案static变量不能使用this,this不能在static的方法中使用。

小结:1、类变量的调用:(1)静态、非静态方法中,可以直接调用。
2、成员变量的调用有2种方法:(1)非静态方法中,可以通过this关键字直接调用。因为成员变量的初始化时间先于类的构造函数执行前,自然保证了成员变量已经被赋值。(2)静态方法中,先实例化类,利用实例化类的引用才能调用。
3、this关键字:(1)不能在静态方法中使用。

作者:Felixcfs
链接:https://www.nowcoder.com/questionTerminal/ac5b5d29942a40bfa182a21db3b086a2
来源:牛客网
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在 2. 在问题之前先讲super的用法:1.super的用法跟this类似,this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象;2.静态优先于对象存在;3.由上面的1.和2.知:因为静态优先于对象存在,所以方法被静态修饰之后方法先存在,而方法里面要用到super指向的父类对象,但是所需的父类引用对象晚于该方法出现,也就是super所指向的对象没有,当然就会出错。综上,静态方法中不可以出现super关键字。



3、
1
System.out.println(10%3*2);
将打印?      2
解释:运算符的优先级:
因为%和*是同一个优先级,从左向右运算



4、

int i=5;

int s=(i++)+(++i)+(i--)+(--i);

s=( )//s 的值是什么?    24

解释:自增自减运算符的区别

int s=(i++)+(++i)+(i--)+(--i);
int s = (5)+(++6)+(7--)+(--6)
=5+7+7+5
=24;

5、下面哪个标识符是合法的?

"9HelloWorld"
"_Hello World"
"Hello*World"
"Hello$World"
1、java的变量名有三种元素构成:数字+字符+$+下划线。
2、java对这三种元素的顺序也是有要求的:不能以数字开头+不能是关键字.
3、A中错在以数字开头、B中错在有空格、C中错在有*.
关于标识符的介绍,具体看链接:http://blog.csdn.net/isabellebaby007/article/details/78167171


6、

What results from the following code fragment?
1
2
3
inti = 5;
intj = 10;
System.out.println(i + ~j);

Compilation error because”~”doesn’t operate on integers
-5
-6
15
解释:
10原码:0000000000000000,0000000000001010;
~10: 1111111111111111,1111111111110101  变为负数,计算机用补码存储
~10反码:10000000000000000,0000000000001010
~10补码:10000000000000000,0000000000001011,等于 -11
故程序结果-6

7、下列不属于java语言鲁棒性特点的是:B
java能检查程序在编译和运行时的错误
java能运行虚拟机实现跨平台
java自己操纵内存减少了内存出错的可能性
java还实现了真数组,避免了覆盖数据的可能
解释:
鲁棒性(Robust,即健壮性)
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生 的错误。通过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外, Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
感觉B选项虽然描述也对,但是,不应该把它归结于鲁棒性,B选项主要是体现Java的由于虚拟机,实现了一次编译,到处运行,跨平台性的特点。因此,我选B。


8、int,String,*point,union哪些不是 Java 的数据类型?  CD
int
String
*point
union
解释:

string是C++中定义字符串的类型,java中是String类

*point是指针,java中没有这种类型

union是C系的类型,java中没有




9

关于抽象类与接口,下列说法正确的有?

优先选用接口,尽量少用抽象类
抽象类可以被声明使用,接口不可以被声明使用
抽象类和接口都不能被实例化。
以上说法都不对
解释:

含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class
类中定义抽象方法必须在具体
(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

1. 一个子类只能继承一个抽象类,但能实现多个接口
2. 抽象类可以有构造方法,接口没有构造方法
3. 抽象类可以有普通成员变量,接口没有普通成员变量
4. 抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
5. 抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法
6. 抽象类可以有静态方法,接口不能有静态方法
7. 抽象类中的方法可以是public、protected;接口方法只有public

 java只是单继承,但是可以实现多个接口,继承的耦合性太强,java推荐高内聚低耦合的设计思路,不推荐使用继承。在用继承的情况下,如果还必须要继承另外的接口会很麻烦,尽量用接口,这样在你必须要用到继承的时候就可以用了。抽象类和接口都不能被实例化。接口没有构造方法,不能被实例化,但是抽象方法可以有构造方法,不过不是用来实例化对象的,使用来初始化的。


10、下面有关 JAVA 异常类的描述,说法正确的有()  AC

A 异常的继承结构:基类为 Throwable,Error 和 Exception 继承 Throwable,RuntimeException 和 IOException 等继承 Exception
B 非 RuntimeException 一般是外部错误(不考虑Error的情况下),其必须被 try{}catch 语句块所捕获

C Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不需要捕捉
D RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获

都是Throwable的子类: 
1.Exception(异常)
 :是程序本身可以处理的异常。 

2.Error(错误): 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。

3.检查异常(编译器要求必须处置的异常) :  除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。

4.非检查异常(编译器不要求处置的异常): 包括运行时异常(RuntimeException与其子类)和错误(Error)。

D选项 错误的原因:说一个简单的例子:在我们用myeclipse或eclipse开发时
非运行时异常 总是在我们写的时候就会出错 提醒我们try catch  或throw  
但是运行时异常检查不出来,只有运行时才会出错,所以也不需try catch


阅读全文
0 0
原创粉丝点击