【Java精品源码栏目提醒】:网学会员Java精品源码为您提供Java基础语法精髓 - 其它资料参考,解决您在Java基础语法精髓 - 其它资料学习中工作中的难题,参考学习。
Java 基础语法精髓本章目标 标识符定义
Java 数据类型 参数传递,基本数据类型参数,引用类型参数 对象实例化和成员的访问 变量作用域及程序中逻辑控制基本语法元素注 释注释是程序员用来标记,说明程序的,编译器会忽略注释中的内容,注释中的内容不会对程序的运行产生任何影响。
Java 语言允许三种风格的注释://单行注释:用于对属性,变量以及算法重要转折时的提示。
/ 多行注释 /:多用于对类、方法及算法的详细说明,一般在对类的注释中要有以下内容:1、 类的简要说明2、 创建者及修改者3、 创建日期或最后修改日期/
Java 文档注释 /:产生
Java 文档,使用 javadoc 命令。
分号:在
Java 编程语言中,语句是一行由分号(;)终止的代码。
例如:total a b c f;语句块(block)语句块(block)也叫做复合语句。
一个语句块(block)是以上括号和下括号为边界的语句集合,语句块也被用来组合属于某个类的语句,例如: public class Date private int day 3 private int month private int year public void pri public static void mainString args 语句块可被嵌套。
以前见到的 main 方法就是一个语句块,它是一个独立单元。
下面的语句是合法的: // a block statement x y 1 y x 1 //an example of a block statement nested within another block statement whileI lt large a a 1 ifa max b b a //nested block is here a 0 i 还有一种静态语句块,这个将在学习 static 关键字时介绍。
空白空白:是空格、tabs 和新行(换行符)的统称。
在源代码元素之间允许插入任意数量的空白,空白可以改善源代码的视觉效果,增强源代码的可读性。
例如: 你 x y 1 y x 1 int x x 23 45; 标识符定义标识符是语言元素的名称,是在程序中表示变量、类或方法等的符号。
标识符由字母、下划线(_)、美元符号()或数组组成,但不能以数字开头,另外可以使用中文做 标识符,但实际中不推荐这样做。
标识符是大小写敏感(区分大小写的)。
标识符未规定最大长度,但实际中不会对标识符命名过长,10 个字符以内合适,标识符的命名尽可能 的有意义。
下列标识符是有效的:index Name r_index _index index (Unicode,使用 16bit 编码)
Java 技术源程序采用双字节的“统一字符编码” ,而不是单字节的 ASCII(使用 8bit)文本。
因而,一个字母有着广泛的定义,而不仅仅是 a 到 z 和 A 到 Z。
标识符不能是关键字,但它可以包含一个关键字作为它的名称的一部分。
例如:thisOne 是一个有效标识符,但 this 却不是,因为 this 是一个
Java 关键字。
Java 关键字下面列出了在
Java 编程语言中使用的关键字: abstract do implements private throw boolean double protected throws break else instanceof public transient byte extends int return true case false interface short try catch final long static void char finally native super volatile class float new switch while continue for nullsynchronized default if package this关键字对
Java 技术编译器有特殊的含义,它们可标识数据类型名或程序构造(Construct)名。
以下是有关关键字的重要注意事项: true、false 和 null 为小写,而不是像在 C语言中那样为大写。
无 sizeof 运算符,所有类型的长度和表示是固定的,不依赖执行。
goto 和 const 不是
Java 编程语言中使用的关键字。
Java 的基本数据类型
Java 编程语言定义了 8 种原始数据类型: 类型 位数 默认值 逻辑类型 boolean 1bit False 文本类型 char 16bit(2byte) ‘u0000’ byte 8bit(1byte) 0 整数类型 short 16bit(2byte) 0 int 64bit(8byte) 0 long 64bit(8byte) 0 浮点类型 float 32bit(4byte) 0.0 double 64bit(8byte) 0.0注意:整数类型默认的是 int,浮点类型默认的是 double。
逻辑类型---boolean逻辑类型的值有两种状态,即经常使用的 true 和 false。
这样的值是用 boolean 类型来表示的。
boolean有两个文字值,即 true 和 false。
以下是一个 boolean 类型变量的声明与初始化:boolean flag false; // 声明一个类型为 boolean 的变量,并为假。
注意:在整数类型和 boolean 类型之间无转换计算,有些语言(特别是 C 和 C)允许将数字值转换成逻辑值,在
Java 语言中是不允许的;boolean 类型只允许使用 boolean 值。
文本类型---char使用 char 类型可表示单个字符,一个 char 代表一个 16-bit 无符号的(不分正负的)Unicode 字符,一个 ‘ )char 文字必须包含在单引号内( ’ 。
at 一个制表符u 一个特殊的 Unicode 字符,????应严格按照四个 16 进制数字进行替换,例如:u03A6表示希腊字母“φ”。
char 类型变量的声明和初始化如下所示:char c A //声明并初始化一个 char 类型变量char c1c2 //声明两个 char 类型变量char 是 int 兼容的类型,比如可以如下声明:int a A //a 97char c 65 //c A字符串类---StringString 不是原始类型,而是一个类(class),它被用来表示字符序列,字符本身符合 Unicode 标准,与 C和 C不同,String 不能用0 作为结束。
String 的文字应用双引号封闭,如下所示:quotI am teacherI Love yourquotString 类型变量的声明和初始化如下所示://声明了两个 String 变量并初始化String str quotI am teacher nquotString name quothis is studentquotString str1Str2 //声明了两个 String 变量整数类型---int、short、long、byte在
Java 编程语言中有四种整数类型,它们分别使用关键字 int、short、long 和 byte 的任意一个进行声明。
整数类型的文字可使用十进制、八进制和 16 进制表示,如下所示:十进制值是 2首位的 0 表示这是一个八进制的数值0xBAAC 首位的 0x 表示这是一个 16 进制的数值注意:所有
Java 编程语言中的整数类型都是带符号的数字整数类型数字默认为 int 类型。
整数类型数字后面紧跟着一个字母“L”,可以强制它为 long 类型。
例如:2L 十进制值是 2,是一个 long077L 首位的 0 表示这是一个八进制的数值0xBAACL 前缀 0x 表示一个 16 进制的数值四种整数类型的长度和范围前面已经列出,这些长度和范围是按
Java 编程语言规范定义的,不是依赖于平台。
浮点类型---float 和 double如果一个数字包括小数点或指数部分,则该数字默认为 double 类型浮点数。
例如:3.14 3.02E23如果一个数字文字后带有字母 F 或 f,则该数字文字为 float 类型浮点数。
例如:1.34F如果一个数字文字后带有字母 D 或 d,则读取数字文字为 double 类型浮点数。
例如:123.4E-306D浮点变量可用关键字 float 或 double 来声明。
Java 技术规范的浮点数的格式是由电子工程师学会(IEEE)754 定义的,是独立于平台的。
变量的声明和赋值变量用来存储信息。
一个变量代表一个特殊类型的存储位置,它指向内存的某个单元,而且指明这块内存有多大。
变量的值可以是基本数据类型,也可以是对象类型。
下列程序显示了多种类型的变量,如何进行声明及赋值的。
public class TestAssign public static void mainString args int ab //声明两个 int 类型的变量 float f 6.4f //声明一个 float 类型的变量并赋值 double d 2.2d //声明一个 double 类型变量并赋值 boolean flag false //声明一个 boolean 类型变量并赋值 char c //声明一个 char 类型变量 String s //声明一个 String 类型变量 String str quotgoodquot //声明一个 String 类型变量并赋值 c a //给 char 类型变量 c 赋值 s quotHello Worldquot //给 String 类型变量 s 赋值 a 1b 2 //给 int 类型变量 a 和 b 赋值 引用类型(reference type)从大的范围来讲,
Java 语言中的数据类型就分为两种:基本数据类型和引用数据类型,前面已经对基本数据类型进行了讲解,下面我们再来理解引用类型。
为了弥补
Java 语言中数据类型的不完整,
Java 语言使用类来创建新的类型,例如可以用以下的类来表示人: public class Person private double height 1.80 private double weight 70 private String name public PersonString name this.name name public Person 关键字 class 是用来声明类的。
Person 是指定了这个类的名称,height 变量被声明,是 Person 类的一个属性,本类包含了 3 个属性。
Person person1,person2;//声明 Person 的两个引用,引用名称为 person1 和 person2。
person1 new Person; //类 Person 构造出实际的内存空间,person1 这个引用,指向这个内存空间。
person2 new Person; //同上,因此这两个变量 person1 和 person2 都是引用类型的,并不实际存储这些数据。
创建并初始化一个对象当任何基本数据类型(如:int、byte、char、long、short、boolean、double、float)的变量被声明时,内存空间同时被分配,此分配属栈。
使用非基本数据类型(如:class)变量的声明,不为对象同时分配内存空间。
事实上,使用 class 类型声明的变量不是数据本身,而是数据的引用(reference) , 。
引用可以理解为 C 语言的指针(Pointer) 但 是不能象 C 语言那样计算指针。
在使用引用变量之前,必须为它分配实际存储空间。
这个工作是通过使用关键字 new 来实现的。
例如:Person person;person new Person;第一个语句仅为引用分配了空间,而第二个语句则通过调用对象的构造函数 Person为对象生成了一个实例,这两个操作被完成后,Person 对象的内容则可通过 person 进行访问。
还可以用一条语句创建并初始化一个对象:Person person new Person使用非基本数据类型(String)变量的声明,分两种情况:使用 String str “grade”;指向的是内存中的特殊区域,称字符串池。
而 String s new String,则和 class 变量声明的规则一致。
存储器分配和布局在一个方法体中,做如下声明:Person person;person new Person;语句 Person person 仅为一个引用分配存储器,存储空间中的值并没有确定。
在 person new Person中关键字 new 意味着为对象分配内存空间,并初始化。
注意:由于使用了缺省构造函数,而缺省构造函数中并未对 name 属性进行赋值操作,所以 name 属性 并没初始化。
引用类型的赋值在
Java 语言中,一个被声明为类的变量,叫做引用类型变量,这是因为它正在引用一个非基本数据类型,这对赋值具有重要的意义。
请看下列代码片段 int x 1 int y x String s “hello” String st s四个变量被创建,两个基本数据类型 int 和两个引用类型 String。
x 的值是 7,而这个值被复制到 y,x 和y 是两个独立的变量且其中任何一个的进一步的变化都不对另外一个构成影响。
,s至于 s 和 st,只有一个 String 对象存在,它包含了文本“hello” 和 st 均引用这个单一的对象。
将变量 st 重新定义,st “world”;则新的对象 world 被创建,而 st 引用这个对象。
Java 基本数据传递与引用传递
Java 语言中的参数传递,都称为是传值,但传的这个值,到底是什么,这个就是需要研究的。
传递的是一个基本数据,还是一个引用,这就要仔细区别。
基本数据类型,值是在栈中,引用数据类型,值是在堆中。
特别注意:对基本数据类型是 pass by value,而对引用类型则是 pass by ref。
例如: public class TestReference int i 5 int j 6 A a new A //试图改变基本类型的参数的值 public void changeIJint xint y int z 0 z x x y y z //试图改变引用类型的参数的地址 public void changeABA aA b A a1 null a1 a a b bli id i b a1 //试图改变基本类型参数的值 public void testint x x x 6 //试图改变引用类型参数的值 public void testAA a a.i 100 public static void mainString args //构造本类的一个对象 TestReference t new TestReference int x 5 int y 6 //定义 A 类的一个对象 a A a new A //改变对象 a 的值 t.testAa //输出 a 的值(属性值) System.out.printlna.i //定义 A 类的一个对象 b A b new A //试图改变两个基本类型的值 t.changeIJxy //试图改变两个引用类型的地址 t.changeABab System.out.printlnx System.out.printlny System.out.printlna.i System.out.printlnb.i class A int i 5 输出结果如下: 100 5 6 100 5可见,方法只能改变引用类型的值,而不能改变引用类型的地址和基本类型的值。
this 引用this 作为一个
Java 关键字,有两个作用: 代表隐含参数的调用 调用本类的其它的构造函数关键字 this 是用来指向当前对象(类实例)的,这里,this.name 指的是当前对象的属性 name。
例 1: public class Person private double height 1.80 private double weight 63 private String name public PersonString name this.name name //全称应该是:Person.this.name public Person 例 2: public class Person private double height 1.80 private double weight 63 private String name public PersonString name this.name name //全称应该是:Person.this.name public Person thisquottomquot 例 3: class Lamp int watts 60 boolean flag false//属性声明 Lampboolean flag this.flag flag//this.flag 是本类的属性 flag public void setFlagboolean flag forint i 1i lt 1000i System.out.printlnquotThe count is quot i //注意参数和属性名称相同,必须使用 this 关键字来区分不同作用域 this.flag flag 下面的代码用于调用上面的代码 Lamp lamp new Lamp lamp.setFlagtrueJava 编码约定虽然任何一个合法的标识符都可以用来当作变量、类、方法等的名称,但是
Java 编程语言极力推荐它的编码约定; classes---类名应该是名词,大小写可混用,但首字母应大写。
如:class TestAeccess interface---接口(界面)名称大小写规则与类名称相同。
如:interface Account method---方法名称应该是动词,大小写可混用,但首字母应该小写,在每个方法名称内用大写字母 将词分隔开限制使用下划线。
例如:getName,addUser variables---所有变量都可大小写混用,但首字母应该小写,词由大写字母分隔,限制使用下划线, 限制使用美元符号()因为这个字符对内部类有特殊的含义。
如:curremtCoustomer 变量应该代表一定含义,通过它可传达给读者使用它的用途。
尽量避免使用单个字符,除非是临时“即 用即扔”的变量(如 i、j、k 作为循环控制变量)。
constant---原始常量应该全部用大写字母并用下划线将词分开;对象常量可大小写混用。
如: HEAD_COUNT,MAXIMUM_SIZE control structures---当语句是控制结构的一部分时,即使是单个语句也应该使用括号()将语 句封闭,例如:ifconditiondo somethingelsedo something else spacing---每行只写一个语句并使用 tab 键缩格使你的代码更易读。
comments---用注释来说明哪些不明显的代码段落;对一般注释使用//分隔符,而大段的代码可使用 / …… /分隔符,使用/ …… /将注释形成文档,并输入给 javadoc 以生成 HTML 代码文档。
// 单行注释 / 多行注释 / / 多行注释,可以使用 javadoc 命令生成 Html 文档 /变量的作用域每个变量都有一个作用域,也就是说这个变量在哪个程序段中起作用,变量的作用域从它被声明时开始直到声明变量的代码段的结束符“”为止,只能在变量的作用域内访问它。
如果在作用域之外访问变量,编译器将产生一个错误。
下面的实例有一定的代表性: public class ScopeExample private int i 1 public void firstMethod int i 3j 4 this.i i j secondMethod6 public void secondMethodint i int j 7 this.i i j public class TestScopeExample public static void mainString args ScopeExample se new ScopeExample se.firstMethod 可以注意到,不同作用域内的变量互相不干扰,通常变量是当前最近作用域内定义的该变量,如果要引用更大作用域外的变量,则需要增加限定符,例如我们已经看到过的 this。
变量初始化在
Java 程序中,任何变量都必须经初始化后才能被使用。
当一个对象被创建时,实例变量在分配存储器的同时被下列初始化: 类型 默认值 类型 默认值 类型 默认值 byte 0 short 0 int 0 long 0L float 0.0f double 0,0d char u0000NULL boolean False 引用类型 null在方法外定义的变量被自动初始化,局部变量必须在使用之前做“手工”初始化。
如果编译器能够确认一个变量在初始化之前被使用的情况,编译器将报错。
public void doComputation int x intMath.random 100.