欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

教程  Java语言学习—第三章 Java语言基本语法[Java基础]

Java 原创 1119 0评论

内容概要:

1.代码编写规则

2.注释

3.标示符

4.变量和常量

5.数据类型

6.类型转换

7.运算符

 

1.代码编写规则

(1)一条命令以分号结束。

(2)块(block)指括在大括号{}里的部分,在定义类、方法时,或在控制语句中使用。

(3)在编写Java代码时,关键字之间有多个空格均被视为一个。行空格没有任何意义,如:public static void main(String[] args) { 等价于 public    static  void main   (String[] args) {

 

2.注释

在程序设计中加以注释不仅会节省代码分析时间,而且也便于修改和维护。Java中有3中注释:

(1)// 。单行注释。“//”后的所有文字都是注释语句。

(2)/*...*/ 。多行注释。“/*”与“*/”之间的语句都是注释语句。

(3)/** ...*/。javadoc注释。在生成Java文档时使用, 如使用它生成API文档。这种注释与javadoc.exe(JDK的一部分)一并使用。 javadoc.exe ABC.java,如果把ABC.java文件做成Java文档,可以使用上面命令。此时,javadoc将会翻译/** */部分。

注释部分在编译时会被忽略,所以并不编译运行。

 

3.标示符

标示符指用户自己起的类名、变量名、方法名等。换言之,标示符就是用户定义的名称。

public class HelloJava{ ........................//类

    public static void main(String[] args){.......//方法

    int i=10;int 数字;............................//变量

    System.out.println(“你好Java!”);..........//输出语句

    }

}

(上面代码中的红色字体部分都是标示符,System虽是Java的库类,也相当于标示符)


标示符的命名规则:

1)区分大小写,标示符长度不限。

2)英文、韩文、数字、下划线、美元符号($)均可用,但不能以数字开头

3)不能使用Java关键字,例如public、void、class等。

4)正确:Abcd、abc12、_Hi、$ abc、abc123abc、elseother等 ... ... 错误:3abc、#a、this、super等。


Java关键字(共51个)

分类关键字
基本数据类型(8个)boolean、byte、char、short、int、long、float、double
访问控制符(3个)private、protected、public
与类有关的(5个)class、abstract、interface、extends、implements
与对象有关的(5个)new、instanceof、this、super、null
与方法有关的(2个)void、return
控制语句(10个)if、else、switch、case、default、for、do、while、break、continue
逻辑值(2个)true、false
异常处理(5个)try、catch、finally、throw、throws
其他(9个)transient、volatile、package、import、synchronized、native、final、static、strictfp
停用的关键字(2个)toto、const

 

4.变量和常量

变量时在程序执行过程中其值可以发生变化的量。变量使用标示符命名。常量是指在程序运行过程中其值保持不变的量。

eg: abc=10; //这是一条赋值语句,把10赋给变量abc。其中,abc是变量,10是常量。


整形常量:十进制整数,如123.0;八进制整数,以0开头,如0123表示十进制83,-011表示-9; 十六进制整数,以0x或0X开头,如0x123表示291,-0X12表示-18。

浮点型常量浮点数代表小数部分的十进制数值。它们可以通过标准计数法和科学计数法来表示。如2.0,3.14159;6.022E23,314159E-05,2E+100等。

布尔常量:只有两个值:true和false

字符常量是指用单引号括起来的一个字符,如'a','A'。另外,对于那些不能直接被包括的字符,有若干转义序列,这样允许输入需要的字符,如\'代表单引号本身,下面是字符转义序列表。


字符转义序列

转义序列数的范围转义序列数的范围
\ddd八进制字符(ddd)\r回车键
\uxxx十六进制Unicode码字符\n换行
\'单引号\f换页
\"双引号\t水平制表符
\\反斜杠\b退格


在Java中,采用如下的表示方法来定义常量: final 常量类型 常量名 =常量值;注意:常量名一般大写) 。eg:final byte BMAX=3;


变量是Java程序的一个基本存储单元。变量由一个标示符、类型及一个可选的初始值组合定义。此外,所有的变量都有一个作用域,定义变量的可见性和生存期。在Java中,所有的变量必须先声明再使用。变量的声明方法如下:访问控制符 变量类型 变量名称 [=变量初值](可选); eg:public int nCount=100;private int i,j=10;float a,b,c;等。

小知识常量的值一旦定义以后不能改变。变量和方法均以小写字母开头。类名以大写字母开头。

 

5.数据类型

数据类型是根据变量或常量所占内存的大小及类型来区分的。Java的数据类型大体上可分为:基本数据类型(primitive type)和对象数据类型(object type)。


(1)基本数据类型:包括逻辑型、字符型、整形和实数型。

Java

基本

数据

类型



名称长度(位)字节数值范围
数值类型整型字节型(byte)81-128—127
整型(int)324-2147483648—2147483647
短整型(short)162-32768—32767
长整型(long)648-9223372036854775808—9223372036854775807
实数型Double(双精度)6481.7e-308—1.7e+308
float(单精度)3243.4e-38—3.4e+38
字符型(char)

162‘ ’中的单个字符
逻辑型(boolean)

81true或false(与整数0、1不能进行转换)
对象数据类型String型(Object)



“ ”中的字符串

说明

1)整型(int)都是有符号的值,无小数部分的数值,整数或者负数。长整型(long)有一个后缀L或l(小写L)(如1000L)。十六进制数有一个前缀0x或0X(如0xCAEF),八进制数有一个前缀0,如010就是十进制中的8。Java中没有unsigned类型。

2)Java中定义了两种浮点类型:单精度(float)和双精度(double)。大部分程序中使用double型。表示float型时要加后缀F或f,如3.402F。没有后缀的(如3.234)一般都默认为是double型。也可以在数字后面加后缀D表示(如3.402D)表示double类型。

3)有3中特殊的浮点值:正无穷大、负无穷大、NaN(非数字),用于表示溢出和出错。0/0或者对一个负数开平方会产生NaN。

4)Java使用Unicode字符集处理文字Unicode使用2个字节表示1个字符。1字节=8比特(bit)或位。比特是最小的内存单元,用来存储0和1。

5)进制转换:(1)012(八进制)→=1*8+2=10(十进制);0x123(十六进制)→1*16^2+2*16+3=291(十进制)。

6)变量赋值举例:byte b=1;boolean a=true;char a=‘A’;String a=“A”;short s=230;float a=2.23f(F);long a=1200L(l); double d=0.23。


(2)对象数据类型:对象数据类型有多种,最具有代表性的是String型对象。String表示字符串。我们可以用下面两种方法来创建对象。

    (1)String s1=“你好”; (2)String s2=new String("Hello");

 

6.类型转换(casting)

(1)自动类型转换:系统自动的转换数据类型。

eg:byte b1=1; byte b2=2; byte b3=b1+b2;//这是错误的表达方式 ,因为b1+b2的值是3,是整数(int型),不能与b3的byte类型相匹配。所以我们要做如下修改:

byte b1=1; byte b2=2; int b3=b1+b2; 或者 byte b1=1; byte b2=2; byte b3=(byte)(b1+b2);//进行强制类型转换。


类型转换表

变量1变量2结果值变量1变量2结果值
bytebyteintlonglonglong
byteshortintbytefloatfloat
intbyteintintfloatfloat
shortintintlongfloatfloat
intintintfloatdoubledouble
longintlongdoubledoubledouble

小知识:两个取值范围比int类型小的或跟int取值范围相同的数据运算结果是整型。因为Java以4个字节为单位处理数据,即以int型处理数据。所以,当运算两个byte型数据时,系统首先将它们转换为int型,然后再进行相应的运算。有32位计算机的说法,是指CPU一次处理32位数据,即4个字节。JVM也以4个字节为处理单位处理数据。对于4个字节以上的变量运算,系统会自动将较小类型先转换成较大类型,然后再计算。自动类型转换时:小类型数据会转换成大类型,两种类型参与运算结果是以较大类型的主。

eg:int b1=1;long b2=2;<?> b3=b1+b2;//b1+b2是long型,所以<?>可以是 long、float、double(比long更大的数据类型)都是可以的。


float型是比long型更大的数据类型:long型占8个字节空间,而float仅占4个字节,但long型无法表示小数(float可以),所以我们将float型看成是比long型更大的数据类型。

eg:int b1=7; int b2=2; int b3=b1/b2; System.out.println(b3);//结果是3,b1/b2是int/int的形式。结果是整型。7/2=3.5(小数部分会被舍去).如果是 double b3= b1/b2;结果会是3.5吗?不是。结果是3.0,因为b1/b2的值是int型3,再转换为double型时3.0.事实上这是强制类型转换的形式,相当于double b3= (double)(b1/b2);


(2)强制类型转换:指强制性的将数据进行转换。

eg:int b3=(int)3.7; // 3.7是double类型,强制转换以后会舍去小数部分,因此b3就被赋值为 3.

再看:int b1=7; int b2=2; double b3=(double)b1/b2; //这是double/int的形式,结果是double型,即7.0/2=3.5,所以b3=3.5.

:Java中只有一种格式的类型转换,及(int)x。没有int(x)的形式(C++中有这种方式)。


(3)String型对象与基本数据类型之间的运算:String类型可以与基本数据类型进行“+”运算,其结果值为一个String型的对象,即:“字符串+整数(实数)=字符串”。 eg:String s=“你好”+12;System.out.println(s); //结果是:你好12。所以“+”起到了将字符串(你好)与整型(12)连接起来的作用,形成新的字符串“你好12”。再看,int a=12;System.out.println("a的值为:"+a+"。"); //结果为:a的值为:12。

 

7.运算符

Java中的运算符大体上可以分为:单目运算符、双目运算符、三目运算符及对象运算符。

(1)单目运算符:只需要一个操作数的运算符,如:-2。

(2)双目运算符:需要两个操作数的运算符,如:2+3。

(3)三目运算符:需要3个操作数的运算符,如:A?B:C。


运算符的种类

优先级运算符含义结合方向优先级运算符含义结合方向
1(),[],。
从左至右9&按位与运算符从左至右
2!,~,++,--,+,-,instanceof+,-表示正负从右至左10^按位异或运算符从左至右
3new (类型)类型操作从左至右11|按位或运算符从左至右
4*,/,%
从左至右12&&逻辑与从左至右
5+,-加减从左至右13||逻辑或从左至右
6<<,>>,>>>>>>无符号右移从左至右14?:条件运算符从右至左
7<,<=,>,>=
从左至右15=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>==
从右至左
8==,!=等于或不等于从左至右

说明

1)强制类型转换符:()也属于运算符之列,instanceof是对象运算符。

2)运算符由高到低的顺序:单目运算符>算术运算符>位移运算符>关系运算符>逻辑运算符>三目运算符>赋值运算符

3)逻辑非(!):把真(true)变为(false),把(false)变为(true)。eg:!!true=!(!true)=true;

4)位非运算符(~):逢1变0,逢0变1.eg:int a=7; int b=-a; a的二进制为:a→0000000000 00000000 00000000 00000111 7 -a的二进制为:-a→11111111 11111111 11111111 11111000 -8,于是b=-8;

5)增减运算符(++、--):使变量的值增1或减1的单目运算符。前置增减运算符:++a,--a(先运算,后处理),eg:int a=10; int b=++a;//a的值先增1,再赋给变量b。结果是a=11,b=11。后置增减运算符:a++,a--(先处理,后运算),eg:int a=10; int b=a++;//a先赋值给b,然后a的值再增1。结果是a=11,b=10。

6)算术运算符中的(/,%):分别表示求商,求余。eg;10/3等于3,10%3等于1。

7)位移(shift)运算符(<<,>>,>>>):shift本身有移动之意,它用来移动比特位。“<<”将比特位左移一位,右端全部填0。

eg:a→0000000000 00000000 00000000 00000111 7 ,a<<1→ 0000000000 00000000 00000000 00001110 14 ,a<<2→0000000000 00000000 00000000 00011100 28 。 

可以看出:每左移一位,数值增加1倍。“>>”表示右移一位,被移动的若是正数,最左端填0,若为负数,则最左端填1.a→0000000000 00000000 00000000 00000111 7 ,a>>1→ 0000000000 00000000 00000000 00000011 3 。 

可以看出:每右移一位,数值减半。所以,“a>>1”相当于a/2;“a>>2”相当于a/4。“>>>”表示右移1位,无论移动的是正数还是负数,最左端均填0.“>>>”没有乘法的效果,只是在需要移位的时候使用。因为被移动的符号位被0填充,所以用“>>>”操作负数后,将得到正整数。

eg:a→0000000000 00000000 00000000 00000111 7 ,a>>>1→ 0000000000 00000000 00000000 00000011 3 。

eg:int a=10;int b=a>>1; //结果a=10,b=5;因为“>>”操作的只是变量a的副本,a的原值不会发生变化。

8)关系运算符:比较两个操作数的大小,返回boolean型。要注意 a=b(赋值)与a==b(比较)的区别。

9)逻辑与(&&):A&&B(同真为true,1假为false),逻辑或(||):A||B(同假为false,1真为true)。

10)位与(&)、位或(|)、位异或(^):A&B(比较两个操作数对应的比特位,若都为1,结果为1,否则为0)。

eg:int a=3,b=10,则 a&b=2(a:0011,b:1010,a&b:0010)。 A|B(比较两个操作数对应的比特位,对应比特位有一个为1,结果为1,否则为0)。

eg:int a=14,b=12,则 a|b=14(a:1110,b:1100,a|b:1110)。A^B(比较两个操作数对应的比特位,如果不相同,结果为1,否则为0)。

eg:int a=14,b=12,则 a^b=2(a:1110,b:1100,a^b:0010)。

11)三目运算符格式:条件式?值1:值2,若条件为真,表达式的值为1,否则为2.

赋值运算符有结合形式,如:=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>==等。

12)对象运算符(instanceof):A instanceof B:如果A是B的对象,返回true,否则返回false。eg:System.out.println("abc" instanceof String);// 结果为true,因为“abc”是字符串类的对象。


位移运算示例

X(十进制)二进制表示X<<1(值)(增倍)X>>1(值)(减半)X>>>1(值)

7(始终不变)

00000111

00001110 (14,等于2X)00000011(3,等于X/2)00000011(3)
X<<2(值)X>>2(值)X>>>2(值)
00011100 (28,等于4X)00000001(1,等于X/4)00000001(1)


问题思考

(1)编写一个程序,判断一个5位整数n各位数字的奇偶性,并求出它们的和。

(2)某个食品店店员不谙计算,为她编写一个程序,拥有计算她在售货时应该找给客户的零钱。

运行结果提示:客户支付金额:10000,客户消费金额:2520,<余额细目>余额:7480,伍千元:1,千元:2,伍百元:0,百元:4,伍拾元:1,拾元:3


转载请注明: ITTXX.CN--分享互联网 » Java语言学习—第三章 Java语言基本语法[Java基础]

最后更新:2018-09-27 14:13:20

赞 (2) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽