1、 Helloworld.java
众观几乎每本Java书籍,基本都是以HelloWorld开头的,那我就借鉴一下老前辈们的习惯,用HelloWorld开个好头!(注意我所写程序的格式,要养成写标准格式程序的习惯,这样不但你调试的时候方便,别人看起来也方便,也更能显示出你写程序水平的高深)
该例子中的双斜杠表示注释,和C语言一样。
public class HelloWorld {
public static void main(String[] args) {//其中[]也可以写在args后面,args也可以随便写成其他字母,例如asdfjkl,这里args只是一个形式参数,所以可以随便改变
System.out.println("HelloWorld!");//println表示输出HelloWorld后换行
System.out.println(123456789);//print表示输出后不换行
}
}
//Java中注释的两种方式如下:
/*
asjdkfjlwe
asdjfkljl
*/
/*
*sajdflk
*ksdljfkl
**/
将该程序写入一个文件,必须命名为HelloWorld.java,这是语法规定,否则运行出错。运行前先要进入该文件所在的文件夹,例如我的这个HelloWorld.java文件存在E盘里面的java文件夹里面,运行时就要先输入E:进入E盘,再输入cd java在E盘里面找到java这个文件夹。接着运行程序,首先进行编译,其指令为javac HelloWorld.java,编译成功后开始运行,其指令为java HelloWorld。具体操作和运行结果如图1-1所示。
图 1-1
2、标识符
(1)Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符。凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则。
(2)Java标识符命名规则:
u 标识符由字母、下划线、美元符或数字组成。
u 标识符应以字母、下划线、美元符开头。
u 标识符大小写敏感,长度无限制。
(3)不成文规定:Java标识符选取应注意见名知意且不能与Java语言的关键字重名。
标识符举例:
合法标识符 |
非法标识符 |
HelloWorld |
class |
DataClass |
DataClass# |
_123 |
12.3 |
$xx |
Hello World |
3、关键字
(1) Java中一些赋以特定的含义,用作专门用途的字符串称为关键字。(大多数编辑器如UtralEdit和EditPlus,都会将关键字用特殊方式标出)
(2) 所有Java关键字都是小写字母。
(3) goto和const虽然从未使用,但也被作为Java的关键字保留。
(4) Java关键字一览表:
abstract |
default |
if |
private |
this |
boolean |
do |
implements |
protected |
throw |
break |
double |
import |
public |
throws |
byte |
else |
instanceof |
return |
transient |
case |
extends |
int |
short |
try |
catch |
final |
interface |
static |
void |
char |
finally |
long |
strictfp |
volatile |
class |
float |
native |
super |
while |
const |
for |
new |
switch |
null |
continue |
goto |
package |
synchronized |
|
4、 常量
Java的常量值用字符串表示,区分为不同的数据类型:
u 整型常量如123
u 实型常量如3.14
u 字符常量如’a’
u 逻辑常量如true、false
u 字符串常量如”HelloWorld”
注:要区分字符常量和字符串常量,字符常量用单引号,字符串常量用双引号。
5、 变量
(1) Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
(2) Java程序中每个变量都属于特定的数据类型,在使用前必须对其声明。例如:
int i = 100;
float j = 3.14f;(在Java中声明float类型时常量后面必须带f,否则编译器会将该变量当成double类型来处理)
double h1,h2,h3 = 3.14;
String s = “helloworld”;
(3) 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此, 每个变量使用前必须先要声明,然后必须进行复杂来填充内容,最后才能使用。
(4) 变量的分类
u 按被声明的位置分:
l 局部变量:方法或语句块内部定义的变量,方法体内部是指与方法对应的大括号内部。
l 成员变量:方法外部、类的内部定义的变量。
u 按所属数据类型分:
l 基本数据类型变量。
l 引用数据类型变量。
a) 基本数据类型
a_1逻辑型boolean
boolean类型适用于逻辑运算,一般用于程序流程控制,其只允许取值true或false,不可以取0或非0的整数代替true或false,这一点和C语言不同。
a_2字符型char
u 字符型常量为用单引号括起来的单个字符,例如:
char a = ‘b’,char c = ‘国’
u Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示。例如:
char c = ‘\u0061’ 其中Unicode是全球语言统一编码。
u Java语言中还允许使用转义字符‘\’来将其后的字符转变为其它的含义,例如:
char e = ‘\n’ 其中’\n’代表换行符
a_3 整数类型
u Java各整数类型有固定的表示范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
u Java语言整型常量的三种表示形式:
l 十进制整数,如123,0,325
l 八进制整数,要求以0开头,如0123
l 十六进制数,要求以0x或0X开头,如0x123
u Java语言的整型常量默认为int型,声明long型常量可用在后面加‘l’或‘L’, 如:int i1 = 500
long i2 = 333333333333L,后面必须加L,否则出错。
u Java整型的适用范围如下表所示:
类型 |
占用存储空间 |
表数范围 |
byte |
1个字节 |
|
short |
2 个字节 |
|
int |
4 个字节 |
|
long |
8 个字节 |
|
a_4 浮点类型
a) 与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
b) Java浮点类型常量有两种表数形式:
i. 十进制数形式,如3.14、314.0、.314
ii. 科学计数法形式,如3.14e2、3.14E2、100E-2
iii.Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:double d = 123.456
float f = 123.456f其中后面必须加f或F,否则出错。
u Java浮点型的适应范围如下表所示:
类型 |
占用存储空间 |
表数范围 |
float |
4 个字节 |
-3.403E38~3.403E38 |
double |
8 个字节 |
-1.798E308~1.798E308 |
b) 基本数据类型转换
b_1 boolean类型不可以转换为其它数据类型。
b_2 整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
u 容量小的类型自动转换为容量大的数据类型,数据类型按容量大小排序如下:
byte,short,charàintàlongàfloatàdouble
其中byte、short、char之间不能相互转换,他们三者在计算时首先会转换为int类型。
u 容量大的数据类型转换为容量小的数据类型时要加上强制转换符,但可能造成精度降低或溢出,使用时要格外注意。
u 有多中类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
u 实数常量默认为double。
u 整数常量默认为int。
b_3 类型转换举例TestConvert.java如下:
public class TestConvert.java {
public static void main(String args[]) {
int i1 = 123;
int i2 = 456;
double d1 = (i1+i2)*1.2;//系统将转换为double型运算
float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需要强制转换符
System.out.println(b3);
double d2 = 1e200;
float f2 = (float)d2;//会产生溢出
System.out.println(f2);
float f3 = 1.23f;//必须加f
long l1 = 123;
long l2 = 30000000000L;//必须加L
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
}
}
其运行结果如下:
c) 运算符
Java语言支持如下运算符:
u 算术运算符:+,-,*,/,%,++,--
u 关系运算符:>,<,>=,<=,==,!=
u 逻辑运算符:!,&,|,^,&&,||
u 位运算符:&,|,^,~,>>,<<,>>>
u 赋值运算符:=
u 扩展赋值运算符:+=,-=,*=,/=
u 字符串连接运算符:+
c_1 自加和自减运算符
举例如下:
public class Test {
public static void main(String args[]) {
int i1 = 10, i2 = 20;
int i = (i2 ++);//先将i2的值20赋给i,然后i2再自加1
System.out.print("i = " + i);
System.out.println(" i2 = " + i2);
i = (++ i2);//i2先自加1,然后再将结果赋给i
System.out.print("i = " + i);
System.out.println(" i2 = " + i2);
i = (--i1);//i1先自减1,然后再将结果赋给i
System.out.print("i = " + i);
System.out.println(" i1 = " + i1);
i = (i1 --);//先将i1的值赋给i,然后自减1
System.out.print("i = " + i);
System.out.println(" i1 = " + i1);
}
}
其运行结果如下所示:
c_2 逻辑运算符:
u 逻辑非 !
逻辑与 &
逻辑或 |
逻辑异或 ^
短路与 &&
短路或 ||
u 逻辑运算一览表
a |
b |
!a |
a&b |
a|b |
a^b |
a&&b |
a||b |
true |
true |
false |
true |
true |
false |
true |
true |
true |
false |
false |
false |
true |
true |
false |
true |
false |
true |
true |
false |
true |
true |
false |
true |
false |
false |
true |
false |
false |
false |
false |
false |
u 逻辑运算实例如下:
public class Test {
public static void main(String args[]) {
boolean a,b,c;
a = true;
b = false;
c = a & b;
System.out.println(c);
c = a | b;
System.out.println(c);
c = a ^ b;
System.out.println(c);
c = ! a;
System.out.println(c);
c = a && b;
System.out.println(c);
c = a || b;
System.out.println(c);
}
}
其运行结果如下所示:
c_3 赋值运算符和扩展赋值运算符
u 当“=”两侧数据类型不一致时,可以使用默认类型转换或使用强制类型转换原则进行处理。注:可以将整型常量直接赋给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超出其表示范围。
u 扩展赋值运算符如下表所示:
运算符 |
用法举例 |
等效的表达式 |
+= |
a += b |
a = a + b |
-= |
a -= b |
a = a – b |
*= |
a *= b |
a = a *b |
/= |
a /= b |
a = a / b |
%= |
a %= b |
a = a % b |
c_4 字符串连接符
u “+”除了用于算术加法运算以外,还可以用于对字符串进行连接操作。如:
int i = 1 + 3;
String s = “Hello” + “World”
u “+”运算符两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
c_5 表达式
u 表达式是符合一定语法规则的运算符和操作数的序列。
u 表达式的类型和值
l 对表达式中操作数进行运算得到的结果称为表达式的值。
l 表达式值的数据类型即为表达式的类型。
u 表达式的运算顺序
l 应按照运算符的优先级从高到低的顺序进行。
l 优先级相同的运算符按照事先约定的结合方向进行。
u 表达式优先级如下所示:
c_6 三目条件运算符
u 三目条件运算符格式: x ? y : z
u 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算结果为表达式y的值,否则整个运算结果为表达式z的值。
6、 语句
6.1 if语句和switch语句
d_1_1 if语句包括:
u if
u if……else
u if……else if
u if……else if ……else if ……else
6.1.2 if语句举例如下:
public class TestIF {
public static void main(String[] args) {
int i = 20;
if(i < 20) {
System.out.println("<20");
System.out.println("<20");
} else if (i < 40) {
System.out.println("<40");
} else if (i < 60) {
System.out.println("<60");
} else
System.out.println(">=60");
}
}
6.1.3 switch语句
u swith () {
case xx :
case xx :
……
default:
……
}
注:case语句后一般要加break语句;多个case可以合并在一起;default可以省略,但不推荐这样做;Java中swith语句只能探测int类型值。
u switch语句举例:
public class TestSwitch {
public static void main(String[] args) {
int i = 8;
switch(i) {
case 8 :
case 3 :
case 2 :
System.out.println("C");
break;
case 9 :
System.out.println("D");
break;
default:
System.out.println("error");
}
}
}
运行结果:
6.2 for循环语句
d_2_1 for循环语句形式:
for(表达式1; 表达式2; 表达式3){语句; … ;}
其执行过程:首先计算表达式1,接着执行表达式2,若表达式2的值为true,则执行语句接着计算表达式3,再判断表达式2的值;依次重复执行下去,直到表达式2的值为false。
注:for语句的三个表达式都可以省略。
6.2.2 for循环语句举例:
public class Test {
public static void main(String args[]) {
long result = 0;
long f = 1;
for (int i = 1; i <= 10; i ++) {//循环十次
f = f * i;
result += f;
}
System.out.println("result = " + result);
}
}
运行结果:
6.3 while语句和do-while语句
6.3.1 while语句形式:
while(逻辑表达式) {语句; … ;}
执行过程:先判断逻辑表达式的值,如果等于true则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止。
6.3.2 do-while语句
do-while语句形式:
do{语句; …;}while(逻辑表达式);
执行过程:先执行语句,再判断逻辑表达式的值,如果等于true再执行语句,否则结束循环。
6.3.3 while语句和do-while语句举例:
public class TestWhile {
public static void main(String[] args) {
int i = 0;
//while语句举例
while(i < 10) {
System.out.println(i);
i++;
}
//do-while语句举例
i = 0;
do {
i++;
System.out.println(i);
} while(i < 10);
}
}
运行结果:
6.4 break语句和continue语句
6.4.1 break语句
break语句用于终止某个语句块的执行。用在循环体语句中,可以强行退出循环。
break语句举例:
public class TestBreak {
public static void main(String args[]) {
int stop = 5;
for(int i = 1; i <= 10; i ++) {
if(i == stop) break;
System.out.println("i = " + i);
}
}
}
运行结果:
6.4.2 continue语句
continue语句用在循环体内,用于终止某次循环过程,跳过循环体中continue语句下面执行的循环,开始下一次循环过程。
continue语句举例:
public class TestContinue {
public static void main(String args[]) {
int skip = 5;
for(int i = 1; i <= 10; i ++) {
if(i == skip) continue;
System.out.println("i = " + i);
}
}
}
运行结果:
Java免费学习 Java自学网 http://www.javalearns.com
关注微信号:javalearns 随时随地学Java
或扫一扫
随时随地学Java