• day_06


    --暑假学习第六天--

    一.构造代码块


    构造代码块的作用:给对象进行统一的初始化。
    构造函数的作用: 给对应的对象进行初始化。

    构造代码块的格式:
     
     {
      构造代码块
     }
     
    注意: 构造代码块的大括号必须位于成员 位置上。

    代码块的类别:
     1. 构造代码块。
     2. 局部代码块.   大括号位于方法之内。  作用:缩短局部 变量 的生命周期,节省一点点内存。
     3. 静态代码块  static
     
    eg:
    class Baby{
    	
    	int id; //身份证
     
    	String  name;  //名字
    	
    	//构造代码块...
    	{
    		//System.out.println("构造代码块的代码执行了......");
    		
    	}
    
    	//带参构造函数
    	public  Baby(int i , String n){
    		id  = i;
    		name = n;
    	}
    	
    	//无参构造方法
    	public Baby(){
    	}
    
    	public void cry(){
    		System.out.println(name+"哇哇哭...");
    	}
    
    }	
    class Demo1
    {
     public static void main(String[] args)
     {
      Baby b1 = new Baby(110,"狗娃");  //  狗娃 狗剩 铁蛋
      System.out.println("编号:"+ b1.id + " 名字:"+b1.name);
    }
    }
    构造代码块要注意的事项:

     1. java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端。
     
     2. 成员变量的初始化工作其实都在在构造函数中执行的。
     
     3. 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在
         构造函数之前执行的,构造函数的中代码是最后执行的。
     
     4. 成员变量的显示初始化与构造代码块 的代码是按照当前代码的顺序执行的。
     
    二.this关键字
     
    this关键字代表了所属函数的调用者对象。
     
    this关键字作用:
     1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定
               访问成员变量的数据。
     
     2. 在一个构造函数中可以调用另外一个构造函数初始化对象。
     
    this关键字调用其他的构造函数要注意的事项:
     1. this关键字调用其他的构造函数时,this关键字必须要位于构造函数中 的第一个语句。
     
     2. this关键字在构造函数中不能出现相互调用 的情况,因为是一个死循环。
     
    this关键字要注意事项:
     1. 存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是“就近原则”的机制访问的。)
     
     2. 如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会在该变量的 前面添加this关键字。
     
    eg:
    class Animal{
    
    	String name ;  //成员变量
    
    	String color;
    
    	public Animal(String n , String c){
    		name = n;
    		color = c;
    	}
    	
    	//this关键字代表了所属函数的调用者对象
    	public void eat(){
    		//System.out.println("this:"+ this);
    		String name = "老鼠"; //局部变量
    		System.out.println(name+"在吃..."); //需求: 就要目前的name是成员变量的name.
    		
    	}
    }
    
    class Demo2
    {
    	public static void main(String[] args) 
    	{
    		Animal dog = new Animal("狗","白色");  //现在在内存中存在两份name数据。
    
    		Animal cat = new Animal("猫","黑色");
    
    		cat.eat();
    		
    	
    	}
    }
    
  • 相关阅读:
    ios6.0,程序为横屏,出现闪退
    [ios]objective-c中Category类别(扩展类)专题总结
    iOS Dev (26) 初步了解下UIColor的最常用知识
    CGGeometry.h详解
    ipa验证错误问题总结
    UITableView和UITableViewCell的几种样式
    willRotateToInterfaceOrientation 屏幕旋转
    ios 使用第三方框架注意
    automaticallyAdjustsScrollViewInsets 使用
    contentSize、contentInset和contentOffset区别
  • 原文地址:https://www.cnblogs.com/seduce-bug/p/9351645.html
Copyright © 2020-2023  润新知