第二章 Java基础程序设计
2016-07-22 00:00
501 查看
摘要: Java中的注释、标示符、关键字
在Java中定义变量或声明常量
Java中的数据类型、数据类型的转换
运算符、表达式与语句
1) public class:这俩个都是java中的关键字,表示的是定义一个类,在Java中所有的操作都是由类组成的。在Java中声明一个类有两种方式,一种是“public class 类名称”,一种是“class 类名称”。使用“public class 类名称”时,类名与文件名必须一致,使用“class 类名称”声明一个类时,类名称与文件名可以不一致,但是在执行时一定要执行生成后的*.class。在一个Java文件中,可以有多个“class 类名称”的定义,但是“public class 类名称”只能有一个,我们称“public class 类名称”为主类;
2) Hello:类名称,在定义类名时,首字母必须大写。
3) public static void main(String args[]):程序的主方法,所有的程序都会以此方法作为起点执行。
4) System.out.println():输出语句,System.out指标准输出,System.out.println()在输出后会自动换行,System.out.print()不会自动换行。
5) {}:代码块,Java中所有的程序都是由一个个代码块组成的。
1. 单行注释:直接在要被注释的内容前加//即可;
2. 多行注释:在要被注释的内容开头处加/*,结尾处加*/。
3. 文档注释:这种注释会被解释成程序的正式文档,并能包含在javadoc工具生成的文档中,可以用来说明程序的结构及方法。以/**开头,以*/结尾。
常量是个固定的数值,是不可改变的。
声明之后,Java会在可使用的内存空间中寻找一个占有两个字节的块供sum变量使用。
在Java中对于一个整型常量,其默认的就是int型。下面详解4中整型:
Ø long:
long数据类型是64位、有符号的以二进制补码表示的整数;
最小值是-9,223,372,036,854,775,808(-2^63);
最大值是9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是0L;
例子:
Ø int:
int数据类型是32位、有符号的以二进制补码表示的整数;
最小值是-2,147,483,648(-2^31);
最大值是2,147,483,647(2^31 - 1);
一般地整型变量默认为int类型;
默认值是0;
例子:
Ø short:
short数据类型是16位、有符号的以二进制补码表示的整数
最小值是-32768(-2^15);
最大值是32767(2^15 - 1);
Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是0;
例子:
Ø byte:
byte数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是-128(-2^7);
最大值是127(2^7-1);
默认值是0;
byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
例子:
Demo1:
运行结果:
注意:
当整数的数据大小超出了可以表出的范围,而程序中又没有做数值范围的检查时,这个整型变量所输出的值就达不到预期的效果了。
Ø float:
float数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float在储存大型浮点数组的时候可节省内存空间;
默认值是0.0f;
浮点数不能用来表示精确的值,如货币;
例子:
Ø double:
double数据类型是双精度、64位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型;
double类型同样不能表示精确的值,如货币;
默认值是0.0d;
例子:
Demo2:
运行结果:
Ø char:
char类型是一个单一的16位Unicode字符;
最小值是’\u0000’(即为0);
最大值是’\uffff’(即为65,535);
char数据类型可以储存任何字符;
例子:
Demo3:
运行结果:
给变量赋值的时候可以使用数字和字符,他们都可以是程序正确的运行,要注意的是要用一对单引号(‘’)括起;
运行结果:
但是现在想输出一个包括双引号的字符串时,可以把字符变量赋值为转义字符,再将它输出。Java语言支持一些特殊的转义字符序列:
Demo5:
运行结果:
Ø boolean:
boolean数据类型表示一位的信息;
只有两个取值:true和false;
这种类型只作为一种标志来记录true/false情况;
默认值是false;
例子:
布尔值通常用来控制程序的流程。
1. 转换前的数据类型与转换后的数据类型兼容
2. 转换后的数据类型的表示范围比转换前的类型大
Demo6:
运行结果:
注意:任何类型的数据都向String转型。
String是一个类,属于引用数据类型:
String可以像普通变量那样直接用来赋值的方式进行生命,字符串用””“(双引号)括起来。两个字符串之间用”+“连接。
任何数据类型碰到String类型的变量或常量之后都会向String类型转换。
Demo7:
运行结果:
只要在变量前面加上要转换的数据类型,运行时就会自动转换,但不影响原来定义的数据类型。
若将一个超出变量范围的值赋给这个变量时,这种转换成为缩小转换,由于在转换过程中可能会丢失数据的精度,Java不会自动做这些数据类型转换,此时就必须要做强制类型转换。
Ø 算术运算符
Ø 关系运算符
Ø 位运算符
Ø 逻辑运算符
Ø 赋值运算符
Ø 其他运算符
表格中的实例假设整数变量A的值为10,变量B的值为20:
Demo8:
运行结果:
表格中的实例整数变量A的值为10,变量B的值为20:
Demo9:
运行结果:
Demo10:
运行结果:
Demo11:
运行结果:
Demo12:
运行结果:
在Java中定义变量或声明常量
Java中的数据类型、数据类型的转换
运算符、表达式与语句
2.1 一个简单的Java范例
上节中我们在Java程序中输出了Hello World,现在我们重新来分析一下其代码结构:public class Hello{ public static void main(String args[]){ System.out.println("Hello World!"); } } |
2) Hello:类名称,在定义类名时,首字母必须大写。
3) public static void main(String args[]):程序的主方法,所有的程序都会以此方法作为起点执行。
4) System.out.println():输出语句,System.out指标准输出,System.out.println()在输出后会自动换行,System.out.print()不会自动换行。
5) {}:代码块,Java中所有的程序都是由一个个代码块组成的。
2.2 注释
任何编程语言在编写的时候都会有注释,注释的作用是方便用户阅读程序,提高程序的可读性,还可以跳过执行被注释的语句,方便调试代码。在Java中有三种注释:1. 单行注释:直接在要被注释的内容前加//即可;
2. 多行注释:在要被注释的内容开头处加/*,结尾处加*/。
3. 文档注释:这种注释会被解释成程序的正式文档,并能包含在javadoc工具生成的文档中,可以用来说明程序的结构及方法。以/**开头,以*/结尾。
2.3 标识符
Java中的包、类、方法、参数、变量的名字都可以有任意顺序的大小写字母、数字、下划线、美元符号组成,但不能以数字开头,也不能是Java中的关键字。建议标识符最好以字母开头,尽量不要包含其他符号。2.4关键字
像其他编程语言一样,Java中也有许多关键字,如下表:2.5变量与常量
变量时利用声明的方式将内存中的某个内存块保留下来供程序使用,可以用来存放数据,使用变量之前必须声明数据类型。常量是个固定的数值,是不可改变的。
2.6数据类型
在Java中数据类型可以分为基本数据类型和引用数据类型,Java中规定了8中基本数据类型来存储整数、浮点数、字符和布尔值。如图所示:2.7基本数据类型
Java提供了8种基本数据类型。6种数字类型(4个整数型,2个浮点型),1种字符类型,还有1种布尔型,如下表:数据类型 | 大小/位 | 范围 | 默认值 |
byte(字节) | 8 | -128 - 127 | 0 |
shot(短整型) | 16 | -32768 - 32768 | 0 |
int(整型) | 32 | -2147483648-2147483648 | 0 |
long(长整型) | 64 | -9233372036854477808-9233372036854477808 | 0 |
float(浮点型) | 32 | -3.40292347E+38-3.40292347E+38 | 0.0f |
double(双精度) | 64 | -1.79769313486231570E+308-1.79769313486231570E+308 | 0.0d |
char(字符型) | 16 | ‘ \u0000 - u\ffff ’ | ‘\u0000 ’ |
boolean(布尔型) | 1 | true/false | false |
2.7.1整数类型
在Java中整数数据类型分为long、int、short、byte四种。在程序中声明一个整型变量short sum; |
在Java中对于一个整型常量,其默认的就是int型。下面详解4中整型:
Ø long:
long数据类型是64位、有符号的以二进制补码表示的整数;
最小值是-9,223,372,036,854,775,808(-2^63);
最大值是9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是0L;
例子:
long a = 100000L; long b = -200000L; |
int数据类型是32位、有符号的以二进制补码表示的整数;
最小值是-2,147,483,648(-2^31);
最大值是2,147,483,647(2^31 - 1);
一般地整型变量默认为int类型;
默认值是0;
例子:
int a = 100000; int b = -200000; |
short数据类型是16位、有符号的以二进制补码表示的整数
最小值是-32768(-2^15);
最大值是32767(2^15 - 1);
Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是0;
例子:
short s = 1000; short r = -20000; |
byte数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是-128(-2^7);
最大值是127(2^7-1);
默认值是0;
byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
例子:
byte a = 100; byte b = -50; |
public class Demo1{ public static void main (String ars[]){ //byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); System.out.println("包装类:java.lang.Byte"); System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); System.out.println(); // short System.out.println("基本类型:short 二进制位数:" + Short.SIZE); System.out.println("包装类:java.lang.Short"); System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); System.out.println(); // int System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); System.out.println("包装类:java.lang.Integer"); System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); System.out.println(); // long System.out.println("基本类型:long 二进制位数:" + Long.SIZE); System.out.println("包装类:java.lang.Long"); System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); System.out.println(); } } |
注意:
当整数的数据大小超出了可以表出的范围,而程序中又没有做数值范围的检查时,这个整型变量所输出的值就达不到预期的效果了。
2.7.2浮点数类型与双精度浮点数类型
在程序设计中经常会使用到小数类型的数值,在Java中,这种数据类型称为浮点类型(float),当浮点数的表示范围不够大时,还有双精度(double)浮点数。Ø float:
float数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float在储存大型浮点数组的时候可节省内存空间;
默认值是0.0f;
浮点数不能用来表示精确的值,如货币;
例子:
float f1 = 234.5f; |
double数据类型是双精度、64位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型;
double类型同样不能表示精确的值,如货币;
默认值是0.0d;
例子:
double d1 = 123.4; |
public class Demo2{ public static void main (String ars[]){ // float System.out.println("基本类型:float 二进制位数:" + Float.SIZE); System.out.println("包装类:java.lang.Float"); System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); System.out.println(); // double System.out.println("基本类型:double 二进制位数:" + Double.SIZE); System.out.println("包装类:java.lang.Double"); System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); System.out.println(); } } |
2.7.3字符类型
字符类型在内存中占有两个字符,可以用来保存英文字符。计算机在处理字符类型时,是把这些字符当成不同的整数来看待。Ø char:
char类型是一个单一的16位Unicode字符;
最小值是’\u0000’(即为0);
最大值是’\uffff’(即为65,535);
char数据类型可以储存任何字符;
例子:
char letter = ‘A’; |
public class Demo3{ public static void main (String ars[]){ // char System.out.println("基本类型:char 二进制位数:" + Character.SIZE); System.out.println("包装类:java.lang.Character"); // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 System.out.println("最小值:Character.MIN_VALUE=" + (int) Character.MIN_VALUE); // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 System.out.println("最大值:Character.MAX_VALUE=" + (int) Character.MAX_VALUE); } } |
给变量赋值的时候可以使用数字和字符,他们都可以是程序正确的运行,要注意的是要用一对单引号(‘’)括起;
public class Demo4{ public static void main (String ars[]){ char ch1 = 'a'; char ch2 = 97; System.out.println("ch1 ="+ch1); System.out.println("ch2 ="+ch2); } } |
但是现在想输出一个包括双引号的字符串时,可以把字符变量赋值为转义字符,再将它输出。Java语言支持一些特殊的转义字符序列:
符号 | 字符含义 |
\n | 换行 (0x0a) |
\r | 回车 (0x0d) |
\f | 换页符(0x0c) |
\b | 退格 (0x08) |
\s | 空格 (0x20) |
\t | 制表符 |
\" | 双引号 |
\' | 单引号 |
\\ | 反斜杠 |
\ddd | 八进制字符 (ddd) |
\uxxxx | 16进制Unicode字符 (xxxx) |
public class Demo5{ public static void main (String ars[]){ char ch1 = '\"'; char ch2 = '\\'; System.out.println("ch1 ="+ch1); System.out.println("ch2 ="+ch2); System.out.println("\"Hello,Hunk!\""); } } |
2.7.4布尔类型
布尔类型的变量只有true和false两种;Ø boolean:
boolean数据类型表示一位的信息;
只有两个取值:true和false;
这种类型只作为一种标志来记录true/false情况;
默认值是false;
例子:
boolean flag = true; |
2.8数据类型的转换
Java的数据类型在定义的时候就已经确定了,因此不能随意的转换成其他的数据类型,但Java允许用户有限度地做类型转换处理。数据类型转换非为”自动类型转换“及”强制类型转换“两种。2.8.1自动类型转换
自动类型转换的前提:1. 转换前的数据类型与转换后的数据类型兼容
2. 转换后的数据类型的表示范围比转换前的类型大
Demo6:
public class Demo6{ public static void main (String ars[]){ int x = 30; float y = 22.78f; System.out.println("x/y = " + (x/y)); System.out.println("10/3.5 = " + (10/3.5)); System.out.println("10/3 = " + (10/3)); } } |
注意:任何类型的数据都向String转型。
String是一个类,属于引用数据类型:
String可以像普通变量那样直接用来赋值的方式进行生命,字符串用””“(双引号)括起来。两个字符串之间用”+“连接。
任何数据类型碰到String类型的变量或常量之后都会向String类型转换。
2.8.2强制类型转换
上面的Demo6可以看到当两个整数做除法运算时,结果还是整数,因此若想得到的结果是浮点类型,就必须做强制转换。Demo7:
public class Demo7{ public static void main (String ars[]){ System.out.println("10/3 = " + ((float)10/3)); } } |
只要在变量前面加上要转换的数据类型,运行时就会自动转换,但不影响原来定义的数据类型。
若将一个超出变量范围的值赋给这个变量时,这种转换成为缩小转换,由于在转换过程中可能会丢失数据的精度,Java不会自动做这些数据类型转换,此时就必须要做强制类型转换。
2.9运算符与表达式
Java中的语句有多种形式,表达式就是其中一种。表达式是由操作数和运算符所组成的,操作数可以是常量、变量,也可以是方法,而运算符就是数学中的运算符号。Java提供了许多的运算符,这些运算符除了可以处理一般的数学运算外,还可以做逻辑运算、位运算等。运算符可以分为:Ø 算术运算符
Ø 关系运算符
Ø 位运算符
Ø 逻辑运算符
Ø 赋值运算符
Ø 其他运算符
2.9.1算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
+ | 加法 - 相加运算符两侧的值 | A + B等于30 |
- | 减法 - 左操作数减去右操作数 | A – B等于-10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取模 - 左操作数除右操作数的余数 | B%A等于0 |
+ + | 自增 - 操作数的值增加1 | B + +等于21 |
-- | 自减 -- 操作数的值减少1 | B - -等于19 |
public class Demo8{ public static void main (String ars[]){ int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = " + (a - b) ); System.out.println("a * b = " + (a * b) ); System.out.println("b / a = " + (b / a) ); System.out.println("b % a = " + (b % a) ); System.out.println("c % a = " + (c % a) ); System.out.println("a++ = " + (a++) ); System.out.println("a-- = " + (a--) ); // 查看 d++ 与 ++d 的不同 System.out.println("d++ = " + (d++) ); System.out.println("++d = " + (++d) ); } } |
2.9.2关系运算符
下表为Java支持的关系运算符表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假(非真)。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)非真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
> = | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
public class Demo9{ public static void main (String ars[]){ int a = 10; int b = 20; System.out.println("a == b = " + (a == b) ); System.out.println("a != b = " + (a != b) ); System.out.println("a > b = " + (a > b) ); System.out.println("a < b = " + (a < b) ); System.out.println("b >= a = " + (b >= a) ); System.out.println("b <= a = " + (b <= a) ); } } |
2.9.3逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假操作符 | 描述 | 例子 |
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
public class Demo10{ public static void main (String ars[]){ boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); } } |
2.9.4赋值运算符
下面是Java语言支持的赋值运算符:操作符 | 描述 | 例子 |
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
public class Demo11{ public static void main (String ars[]){ int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c ); c += a ; System.out.println("c += a = " + c ); c -= a ; System.out.println("c -= a = " + c ); c *= a ; System.out.println("c *= a = " + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c ); } } |
2.9.5条件运算符(?:)
语法结构:variable x = (expression) ? value if true : value if false |
public class Demo12{ public static void main (String ars[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } } |
2.9.6运算符的优先级
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。类别 | 操作符 | 关联性 |
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !〜 | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
相关文章推荐
- C# partial关键字说明
- Lua中关系运算符的使用教程
- Lua学习笔记之运算符和表达式
- asp下查询xml的实现代码
- SQL语句的各个关键字的解析过程详细总结
- C# 的关键字详细介绍
- C#运算符重载用法实例分析
- C# 参考之访问关键字:base、this
- .net(c#)中的new关键字详细介绍
- C#基础语法:Base关键字学习笔记
- sql server 2008中的apply运算符使用方法
- C#中38个常用运算符的优先级的划分和理解
- C++中explict关键字用法
- 讲解C++编程中Address-of运算符&的作用及用法
- 深入分析C++中几个最不常用的关键字
- 详谈signed 关键字
- 探讨register关键字在c语言和c++中的差异
- 详解C++中的成员访问运算符和指针到成员运算符
- C++的static关键字及变量存储位置总结
- C 语言restrict 关键字的使用浅谈