第二章.一切都是对象之作用域、方法、参数、返回值、新类型

1.作用域

  • 作用域决定了在其内定义的变量的可见性和生命周期。在java、C、C++中,作用域有花括号的位置决定{}
  • 在作用域定义的变量只可用于作用域结束之前
  • 一个作用域之内的一个类型的变量只能有一个名字,名字不能重复。

    如:{
    	           int x = 12;
    	           {
    	              int x = 96;//编译器会抛出异常
    	           }
    	        }


2.Java对象的作用域

  • java对象的作用域不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。
    如:
    		{
    			String s = new String("x");
    		}
    引用s在作用域的终点就消失了,我们无法在它的作用域之外通过这个引用访问这个对象,然而s指向的对象仍继续占据着内存。对象的回收取决于java的垃圾回收机制。
    没有引用的对象将在gc后被垃圾回收器回收。

3.创建新类型,类

  • class关键字后紧跟着的是新类型的名称。新类型的名称要与.java的名称一样,不然编译器会报错。
    class Test{  }
    可以通过new关键字创建这个对象。
    Test test = new Test()

4.字段(类的状态,数据成员)和方法(类的行为、成员函数)

  • 没有赋值时基本类型的默认值,但它仅作用于 字段作为类的成员参数时。并不作用于“局部变量”,如方法中的成员变量,。
    如局部变量中int x;这个x可能是任意值,而不会被自动初始化。

    基本类型默认值
    booleanFALSE
    char\u000'(null)
    byte(byte)0
    short(short)0
    int0
    long0L
    float0.0f
    double0.0d

5.方法参数和返回值。

  • 在java中用方法这个术语来表示“做某些事情的方式”。
  • java 方法决定了一个对象能够接收什么样的消息。
  • 方法的基本组成:名称、参数。返回值和方法体。
    	/**
    	 * @name method 名称
    	 * @param s 参数列表
    	 * @return 返回值
    	 */
    	private String method(String s){
    		/**方法体*/
    		return null;
    	}

  • 方法名和参数列表(合起来被称为方法签名)唯一的标识出某个方法。
  • java中方法只能作为类的一部分来创建。方法只有通过对象才可以被调用。调用的方式是对象引用名紧跟着句点,然后方法名和参数列表。
    test.method("哈哈");
  • 这种调用方法的行为通常被称为“发送消息给对象”。消息是method() 对象时test,然后test就知道去做什么啦。
  • 参数列表:参数列表中指定要给对象发送的消息内容,这些信息和java中其他信息一样,采用的都是对象的形式。(在java中,对象无处不在)
    因此 必须制定参数的类型和名称,这里传递的实际上是引用,并且传递的引用的类型必须正确,java是重类型语言。String 参数的方法不可能接受int

6.return 关键字

  • 它代表“已经做完,离开此方法”
  • 如果此方法产生一个值,这个值要放在return后面,也就是所谓的返回值。
  • 若果返回值类型是void的话,那么return 关键字的作用只是退出方法。
  • 如果返回值不是void,无论在何处返回,编译器都会强制返回一个正确类型的返回值。

7.名字可见性,命名空间。

  • 如果全局变量和全局方法、函数、类拥有相同的名字,那么,就会发生冲突。所以引入了“命名空间”的概念。
    如com.yue.test 
  • 这种机制意味着所有的文件都能自动存活在他们自己的名字空间内,而且同一个文件内的每个类都有唯一的标识符,当然,同一个命名空间下的类型名也不能重复。

8.运用其他构建 import,导入

  • 如果想要在自己的程序中使用预先定义好的类,那么编译器就必须知道怎么才能定位到它们。
  • 使用import关键字只是编译器导入一个包,也可以导入一个类,如果我们想使用某个类库中的类的话,
  • 大多数时候,我们使用与编译器附在一起的Java标准类库里的构件。
    如:导入一个类库,就可以使用此类库中的所有的类了。
    import java.util.*;
    如:导入一个类
    import java.util.ArrayList;

9.static关键字。

  • 需要注意的是static作用域内的参数或方法必须也是static的。
  • 执行new来创建对象时,数据存储空间才能被分配,其方法才能被外界调用。
  • 问题1:只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本不用创建对象。
  • 问题2:希望某个方法不与包含它们的类的任何对象关联在一起,也就是说,即使没有创建对象,也能够调用方法。
  • 有些面向对象语言采用类数据和类方法两个术语,代表那些数据和方法只是作为整个类,而不是类的某个特定的对象而存在,java有时也用。

10.static的使用

  • public class Test {
    
    	static int i = 47;
    }
    无论创建了多少个Test对象,Test.i也只有一份存储空间,所有的Test对象共享同一个i。
    		Test test1 = new Test();
    		Test test2 = new Test();

    t1.i和t2.i只想同一个存储空间,指的是同一个i;
  • 可以通过一个对象来定位static参数,也可以通过类名,
    Test.i++;
  • 使用类名是引用static变量的首选方式,不仅强调了static的结构,也为编译器进行优化提供了更好的机会。
  • 定义静态方法的方式和定义静态变量的方式相同。
  • static方法的一个重要作用就是在不创建任何对象的前提下就可以调用它。如main()方法一样,它是运行一个程序的入口点。
  • static方法可以创建和使用与其类型相同的被命名对象。因此,static方法常常用来做“牧羊人”的角色,负责看护与其隶属同一个类的实例群.

11.创建第一个程序。

  • package com.yue.test;
    
    public class Test {
    
    	public static void main(String[] args) {
    		System.out.println();
    	}
    }
    

    类的名称必须与扁编译单元(.java文件)名称相同,也就是说一个编译单元中必须有一个和他同名的类,并且public类只能有一个。
    java.lang是默认导入到每个java文件中去的。
    main()方法中的第一个参数时一个String对象的数组。args用来存储命令行参数。
  • 编译和运行:要编译和运行java程序,必须安装jdk,配置环境变量以拥有java的开发环境。












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值