Object类,值域,泛型等总结(适合有基础的人看)

java的作用域在编程的时候经常会遇到,而我经常会搞不清楚这个

问题,所以在家的这几天回忆一下过去不知道的每个小知识点

 

变量的值域;

 

package 基础;

/**
 * 作用域的范围
 * 
 * @author Administrator
 * 
 */
public class zuoyongyu {
public static void main(String[] args) {
zuoyongyu demo = new zuoyongyu();
// 定义变量
int x = 2;
System.out.println(" int x =" + x);

demo.count(x);
// 调用Count的方法后再打印,局部变量的范围是所在方法的范围,一旦离开这个方法作用域就消失
System.out.println("xx =" + x);
}

// 将变量的值传到方法中来,重新赋值,并打印
public void count(int x) {
x = 10;
System.out.println("x =" + x);
}

}

 

 

运行结果:

int x =2

x =10

xx =2

 

 

int x = 2;等价于C语言的全部变量,x = 10;等价于C语言的局部变量

JAVA没有全局变量,  局部变量只在所在的范围有用,

 

 

 

2,Object类强制转型的问题

package 基础;

/**
 * Object类的强制转换
 * 
 * @author Administrator
 * 
 * 当一个类没有显示扩展的是其他类,默认的还Object类,所有对象
 * 都是Object的多态形式,
 */
public class Demo {
public static void main(String[] args) {
//创建对象
Demo demo = new Demo();
//字符串赋值
String name = "pen";
//字符串赋给Object
Object obj = name;
System.out.println(name==obj);//引用的同一个对象所有为true
//将Object赋给字符串,需要强制转型,在对象流中经常会遇到
name = (String) obj;
}

}

 

 

 

3,泛型

         泛型的子类继承;

          在JAVA中子类的继承一般使用extends继承父类,或者是implements某些接口

          
        Number n = new Integer(12);Integer是Number的子类  
       这是向上转型,但是泛型有点变化
       
      List<String> list = new ArrayLsit<String>();//定义一个队列装字符串类型的
      List<Object> lo= list;
      第一行代码是正确的,第二行代码list<String>赋值给List<Object>,是错误的,在泛型中不可以这样做
       
      List<String> list1 = new ArrayLsit<String>();
      List<Integer> list2 = new ArrayLsit<Integer>();
      list1 = list2;//错误
      list2 = list1;//错误

 

       

       

      通配符:

        

        在泛型中进场会遇到不知道泛型的类型,需要最后才知道,这时我们可以将其定义为

     通配符,这样后面就好定义了

   

  List<?> c = new ArrayList<Object>();    
     c.add(new Object());//编译出错
     c.add(null);//这里不知道c的类型,所以不能再其中添加对象,唯一列外的就是null,它是所有类型的成员
   

   

     

 

你可能感兴趣的:(泛型的继承和通配符,变量的值域,Object类转换)