题目整理

一、接口

java接口包含函数声明和变量声明。(×)

分析:接口中声明的“变量”必须为public final static,所以为常量。

二、异常

1、开销

在java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销。(√)

分析:try{}catch{}会增加额外的开销

2、关于异常的编程,以下描述错误的是:(3 )

  1. 在有除法存在的代码处,抛不抛出异常均可
  2. int i=Integer.parseInt(”123a”);将产生NumberFormatException
  3. int a[]=null; a[0]=1; 将产生ArraylndexOutOfBoundsException
  4. 输入输出流编程中,读和写时都必须抛出IOException

分析:

A.除数为0ArithmeticException,是RuntimException的子类。而运行时异常将由运行时系统自动抛出,不需要使用throw语句。Java编译器 允许忽略运行时异常,一个方法可以既不捕捉,也不声明抛出运行时异常。

C.产生NullPointerException。因为它没有分配空间。

三、static

被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量。

所以下述代码会编译出错:

public class Test {
    static String x="1";
    static int y=1;
    public static void main(String args[]) {
        static int z=2;
        System.out.println(x+y+z);
    }
}

四、包装类

下面代码的运行结果为(null 42 42)

class Two{
    Byte x;
}
class PassO{
    public static void main(String[] args){
        PassO p=new PassO();
        p.start();
    }
    void start(){
        Two t=new Two();
        System.out.print(t.x+””);
        Two t2=fix(t);
        System.out.print(t.x+” ” +t2.x);
    }
    Two fix(Two tt){
        tt.x=42;
        return tt;
    }
}

此处为Byte是byte的包装类型,初始化为null而不是0。

五、基本类型

下面哪些赋值语句是正确的(1、2、4)

  1. long test=012
  2. float f=-412
  3. int other =(int)true
  4. double d=0x12345678
  5. byte b=128

A和B中long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常。AB正确

boolean类型不能和任何类型进行转换,会报出类型异常错误。所以C错。

D选项可以这样定义,D正确。

E选项中,byte的取值范围是-128—127。报出异常: cannot convert from int to byte.所以E选项错误。

六、抽象类和接口

关于抽象类

  • JDK 1.8以前,抽象类的方法默认访问权限为protected
  • JDK 1.8时,抽象类的方法默认访问权限变为default

关于接口

  • JDK 1.8以前,接口中的方法必须是public的
  • JDK 1.8时,接口中的方法可以是public的,也可以是default的
  • JDK 1.9时,接口中的方法可以是private的

七、注解

1、Override 注解

指明被注解的方法需要覆写超类中的方法.

如果某个方法使用了该注解,却没有覆写超类中的方法(比如大小写写错了,或者参数错了,或者是子类自己定义的方法),编译器就会生成一个错误.

2、Deprecated 注解

可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的,可能以后会被删除的类、方法等,如果现在使用,则在以后使用了这些类、方法的程序在更新新的JDK、jar包等就会出错,不再提供支持。     个人程序中的类、方法、变量用@Deprecated修饰同样是不希望自己和别人在以后的时间再次使用此类、方法。  当编译器编译时遇到了使用@Deprecated修饰的类、方法、变量时会提示相应的警告信息。

3、Suppresswarnings 注解

可以达到抑制编译器编译时产生警告的目的,但是很不建议使用@SuppressWarnings注解,使用此注解,编码人员看不到编译时编译器提示的相应的警告,不能选择更好、更新的类、方法或者不能编写更规范的编码。同时后期更新JDK、jar包等源码时,使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持,出现错误,仍然需要修改。

抑制警告的关键字:

八、内部类和外部类的修饰符

对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。

对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

九、Java关键字

abstract                continue           for            new        
switch                  default            if             package     
synchronized            do                 goto           private     
this                    break              double         implements   
protected               throw              byte           else       
import                  public             throws         case       
enum                    instanceof         return         transient  
catch                   extends            int            short       
try                     char               final          interface    
static                  void               class          finally   
long                    strictfp           volatile       const      
float                   native             super          while
boolean                 assert 

十、大小

length --- arrays (int[], double[], String[]) ---- to know the length of the arrays

length() --- String related Object (String, StringBuilder etc)to know the length of the String  

size() --- Collection Object (ArrayList, Set etc)to know the size of the Collection

十一、真数组

真数组: 数组元素在内存中是一个接着一个线性存放的,通过第一个元素就能访问随后的元素,避免了数据覆盖的可能性,和数据类型覆盖并没有关系。

  • Java致力于检查程序在编译和运行时的错误。
  • Java虚拟机实现了跨平台接口
  • 类型检查帮助检查出许多开发早期出现的错误。
  • Java自己操纵内存减少了内存出错的可能性。
  • Java还实现了真数组,避免了覆盖数据的可能。

注意,是避免数据覆盖的可能,而不是数据覆盖类型

十二、URL

URL u =new URL("http://www.123.com");。如果www.123.com不存在,则返回__http://www.123.com____。

在执行URL u =new URL("http://www.123.com");这句话的时候确实要抛出异常,但是这个异常属于IOException,不管网址是否存在,最后都会返回该网址的一个连接,打印出来就是该网址。

十三、枚举

enum AccountType
{
    SAVING, FIXED, CURRENT;
    private AccountType()
    {
        System.out.println(“It is a account type”);
    }
}
class EnumOne
{
    public static void main(String[]args)
    {
        System.out.println(AccountType.FIXED);
    }
}

上述代码执行结果为:Compiles fine and output is prints”It is a account type”thrice followed by”FIXED”

分析:

枚举类有三个实例,故调用三次构造方法,打印三次It is a account type

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值