java解惑1

1


class  Test1
{
 public void main(String[] args)
 {
  int a;
  int b=1;
  if(b==1)
   a=2;
  System.out.println(++a);
 }
}

有什么错误?

  class  Test1
{
 public void main(String[] args)
 {
  int a;
  int b=1;
  if(b==1)
   a=2;
  System.out.println(++a);
 }
}

因为在a是局部变量,当b!=1的时候a将没有被赋值,所以出现错误是:a未被初始化

2

class Something {
    int i;
    public DoSomething() {
        System.out.println("i = " + i);
    }
}

这个没有错误,因为要调用DoSomething()方法必须由对象来调用,而只有构造函数才能创建对象,i将在构造函数中被初始化。

3


class Something {
    int i;
    public static void main(String[] args) {
        System.out.println("i = " + i);
    }
}

错误:在静态函数中使用了非静态变量i。所以要在int i前面加static。而static变量有默认的初始值,所以没有初始化错误。

4

public class Some1 {
   void doSomething () {
       private String s = "";
       int l = s.length();
   }
}

错误:局部变量前不能加访问控制符。而final,abstract和strictfp是非访问控制符,所以可以加。

5

float f=2.3;

错误,possible loss of precision
found   : double。应该是float f=(float)2.3;

6 public class Some1 {
 
   void doSomething () {
    short int  i=1;
    i=i+1;
       System.out.println(i);
   }
}

错误:1 没有short int ,short i=1就行

         2 i=i+1;有错,精度有错,改成:i=(short)(i+1);或者i+=1;

总结:java中进行类型转换时,考虑的是有没有精度的损失,具体转换有两种类型:

1 数据类型:要把大的类型当小的使用时,要进行强制转换。

2 类的对象。类的对象之间的转换必须是有相互的继承关系的时候才能进行转换。对象转换时可以把子类的对象直接赋给父类对象,但是当把父类对象赋给子类对象时要进行强制转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值