1.作用域
- 作用域决定了在其内定义的变量的可见性和生命周期。在java、C、C++中,作用域有花括号的位置决定{}
- 在作用域定义的变量只可用于作用域结束之前。
- 一个作用域之内的一个类型的变量只能有一个名字,名字不能重复。
如:{ int x = 12; { int x = 96;//编译器会抛出异常 } }
2.Java对象的作用域
- java对象的作用域不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。
如:
引用s在作用域的终点就消失了,我们无法在它的作用域之外通过这个引用访问这个对象,然而s指向的对象仍继续占据着内存。对象的回收取决于java的垃圾回收机制。{ String s = new String("x"); }
没有引用的对象将在gc后被垃圾回收器回收。
3.创建新类型,类
- class关键字后紧跟着的是新类型的名称。新类型的名称要与.java的名称一样,不然编译器会报错。
可以通过new关键字创建这个对象。class Test{ }
Test test = new Test()
4.字段(类的状态,数据成员)和方法(类的行为、成员函数)
- 没有赋值时基本类型的默认值,但它仅作用于 字段作为类的成员参数时。并不作用于“局部变量”,如方法中的成员变量,。
如局部变量中int x;这个x可能是任意值,而不会被自动初始化。
基本类型 默认值 boolean FALSE char \u000'(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.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的使用
无论创建了多少个Test对象,Test.i也只有一份存储空间,所有的Test对象共享同一个i。public class Test { static int i = 47; }
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的开发环境。