您的位置:首页 > 编程语言 > Java开发

【java基础】——java基本语法(1)

2015-06-08 13:07 393 查看

一、java语言基础构成

java语言的基础由关键字、标识符、注释、常量和变量、运算符、语句、函数、数组构成。

二、java关键字和保留字

1、关键字

定义:被java语言赋予了特殊涵义的单词。
特点:关键字中所有字母均为小写。
关键字共有50个,分为以下类型,都有其特殊含义。

用于定义数据类型的关键字(下表)

classinterfacebyteshortint
longfloatdoublecharboolean
void
用于定义数据类型值的关键字:true,false,null

用于定义流程控制的关键字(下表)

ifelseswitchcasedefault
whiledoforbreakcontinue
return
用于定义访问权限修饰符的关键字:private, protected,public
用于定义类、函数、变量修饰符的关键字:abstract,final,static,synchronized
用于定义类与类之间关系的关键字:extends, implements
用于建立实例及引用实例,判断实例的关键字:new,this,super,instanceof
用于异常处理的关键字:try,catch,finally,throw,throws
用于包的关键字:package,import
其它修饰符关键字:native,strictfp(strict float point,精确浮点),

transient(变量修饰符,用它声明一个实例变量,在对象序列化时不会被序列化),

volatile(类型修饰符,用来修饰被不同线程访问和修改的变量),

assert(断言,可以看作是异常处理的一种高级形式,用于捕捉我们在代码中做出的假设)。

2、保留字:以后可能用的。const、goto

三、java中的常量与变量

1、常量

常量:表示不能改变的数值。
java中常量的分类:

整数常量:所有整数
小数常量:所有小数
布尔型常量:较为特有,只有两个数值,true和false
字符常量:将一个数字字母或符号用单引号(‘’)标识
字符串常量:将一个或者多个字符用双引号标识
null常量:只有一个数值,null

对于整数,java有三种表现形式:

二进制:0和1表示,满2进1
十进制:0~9,满10进1
八进制:0~7,满8进1,开头用O表示
十六进制:0~9,A~F,满16进1,开头用Ox表示

计算机采用二进制的原因:

技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”来表示。
简化运算规则,两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。
适合逻辑运算,逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数的“真”与“假”相吻合。
易于进行转换,二进制与十进制数易于互相转换。
用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠的分辨出它是高还是低。

2、变量

定义:内存中的一个存储空间,该空间有自己的名称(变量名)和类型(数据类型)。
作用:用于不断的存放同一类型的常量,并可以重复使用。
定义的格式:数据类型 变量名 = 初始化值。 如:int x = 6;
变量的作用范围:从变量定义开始到定义它的代码块结束。同一范围内,不允许多个局部变量命名冲突。
什么时候定义变量:当数据不确定的时候,需要对一个数据进行存储时,就定义一个变量来完成存储动作。

变量的命名规则:

①应以字母、下划线、或美元符号开头。
②后面接字母、下划线、美元符号或者是数字。
③java变量名没有长度限制。
④java变量名对大小写敏感。
驼峰命名法:
①变量名应该用有意义的单词。
②变量名如果只有一个单词,则所有的字母小写。
③变量名如果由多个英文单词组成,则从第二个单词开始首字母大写。
下面举一些例子来说明命名规则:
合法的变量名:Password、last_name、$abc、_ref
正确的变量名:password、last_Name

3、数据类型

java是一种强类型语言。这就意味着java必须为没一个变量声明一种类型。在java中,一共有8中基本类型,其中有4种整型、2种浮点类型、一种用于表示Unicode编码的字符单元的字符类型char和一种用于表示真值的boolean类型。
java中有两种基本数据类型:基本数据类型和引用数据类型,其结构图如下:



基本数据类型:所占字节数及取值范围如下图:



基本数据类型的转换:
在java中基本数据类型共有8中,其中boolean型不能转换成其它类型,其它类型也不能转换呈boolean类型。
除boolean类型外,剩下的7种类型按照他们容量的大小,从小到大,依次排序为:

容量小的向容量大的,可以自动转换,比如可以将一个int类型的值直接赋值给double,如:double d = 34;
容量大的向容量小的转换,则必须进行强制类型转换,如:int i = (double)32.42;
整数类型常量默认为int类型,浮点型常量默认为double类型
在多种数据类型进行混合运算时,容量小的自动转换成整个表达式中容量最大的,然后再进行计算。
在进行多种数据类型混合运算时,byte、short、char三种类型不会相互转换,他们各自转换成int再进行计算。
在有些时候,容量小的会自动提升为容量大的,比如方法重载传递参数的时候,但byte、short不会自动提升为char。
注意:强制类型转换虽然能通过编译,但运行时,有可能会造成数据溢出,损失精度。

自动类型提升示意图如下:



四、java中的运算符

1、算术运算符

单目运算符:+(正)、-(负)、++(自增)、--(自减)
双目运算符:(+、-、*、/、%)(加、减、乘、除、模)
三目运算符:a>b?表达式1:表达式2。注:当a>b为true时,返回表达式1的值,否则返回表达式2的值。

package com.huang.test;
/**
 *@author huangxiang
 *@date 创建时间:2015年3月10日下午10:32:30
 *@version 1.0
 */
public class TestDemo {
	//演示算术运算符
	public static void main(String[] args) {
		//单目运算符的演示
		int a = 5,b=4,c=8;
		int d = a+b-c*b;
		int e = a>d?a:d;//三目运算符
		System.out.println(d);//d = -23
		System.out.println(e);//e = 5;
	}
}

2、赋值运算符:=、+=、-=、*=、/=、%=

3、比较运算符:==(比较的是左右两边的变量是否来自于同一个内存地址)

注:①==运算符比较的是值类型,(如基础数据类型,int之类的)的话,由于值类型是存储在栈里面的,当两个变量有同一个值时,其 实他们只用到了一个内存空间,所以比较的结果是true。
public class Test2Demo {

	public static void main(String[] args) {
		int a = 1;
		int b = 1;
		System.out.println(a==b);//结果为true
	}
}

②如果比较两个引用类型,则比较的就是它们的引用地址。这时候就要看两个变量是否引用自同一个地址的内存了。
public class Test2Demo {

	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = "abc";
		System.out.println(s1==s2);//结果为true
	}
}

但是如果:

public class Test2Demo {

	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = new String("abc");
		System.out.println(s1==s2);//结果为false
	}
}
为什么结果会不同呢?
原因:a、java中有字符串缓冲池。在例子1中,S1和S2用的是同一个内存空间的“abc”,所以此时==的结果为true。
b、在例子2中,S2使用了new操作符重新申请了空间,没有用到缓冲池里的原有变量,因此,虽然S1和S2的值都是"abc"。 但所属不同内存空间,所以==的结果为false。

4、逻辑运算符(&&、||、!、|、&、^)

其中,&和&&的特点是:单&时,左边无论真假,右边都进行运算;双&时,如果左边为真,右边参与运算;如果左边为假,则右边不参与运算。而“|”和“||”的特点是:“|”表示其两边都参与运算。而“||”时,表示当左边为真,右边不参与运算。

5、位运算符(&、|、^、~、>>、<<、>>>)

左移(<<):被移除的高位丢弃,空位补0
右移(>>):被移位的二进制最高位是0,则右移后空位补0;最高位为1,空位补1。
无符号右移(>>>):被移位的二进制无论最高位是什么,都补0
与(&):与二进制位进行&运算,两个全部为1,结果为1,否则为0
或(|):与二进制为进行|运算,只有两个都为0是才是0,否则为1
异或(^):两个操作数的位中,相同结果为0,不同为1
非(~):取反.

6、Instanceof

该运算符是双目运算符,左边操作的是一个对象,右边操作的是一个类或接口。当左面的对象是右边的类(或右边的类的子孙类)创建的对象、或者是右边接口的实现类(或实现的子孙类)的对象时,该运算符结果为true,否则为false。

五、标识符

定义:在java语言中,对于变量、常量、函数、语句块也有名字,我们通通称之为java标识符。标识符是用来给类、对象、方法、变量和自定义数据类型命名的。
标识符的组成:标识符由数字、字母、下划线、美元符号组成。java中是区分大小写的,而且还要求首字母不能是数字。最重要的是,java关键字不能当做标识符。
如:
合法标识符:myName、My_name、Points、_3_
非法标识符:#name、25name、class、&time

标识符命名约定:

类名和接口:每个字的首字母大写,含有大小写。如;Myclass、HelloWorld等
方法名:首字母小写,其余的字母大写,含有大小写,尽量少用下划线。
常量名:基本数据类型的常量名全部使用大写字母,字与字之间用 下划线分隔。对象常量可用大小写混写。如:SIZE_NAME。
变量名:可大小写混写,首字母小写,字间 分隔符用字的首字母大写。不用下划线,少用美元符号。给变量名命名尽量见名知意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: