Java语言程序设计(原书第8版)--基础篇 注意(一)

掌握Java语言基本且必备的知识点,在实践中运用并总结!
1.你可能想知道为什么main方法要以这样的方式声明,为什么使用System.out.println(...)就可以在控制台上显示信息。在现阶段,你只需要知道他们就是这么做的就可以。这一问题将在后续的章节中得到完整的回答。
2.想起他任何一种语言一样,Java也有自己的语法,而且你必须按照语法规则编写代码。如果违反可语法规则,例如:忘记了分号,忘记了花括号,忘记了引号,或者拼写错了关键字String,Java编译器会报告语法错误。尝试去编译带有这些语法错的程序,看看编译器会报告些什么。
3.源文件的扩展名必须是.java,而且文件名必须与公用类名完全相同。例如,程序清单中1-1中源代码的文件必须命名为Welcome.java,因为公用类的类名就是Welcome。
4.在编译和运行程序前必须先安装和配置JDK。补充材料I.B介绍如何安装JDK以及如何设置Java程序的编译和运行环境。如果你在编译和运行Java程序的过程中遇到问题,请参考补充材料I.C,这个补充材料还解释了如何使用基本的DOS命令,以及如何使用Windows记事本(NotePad)和写字板(WordPad)来创建和编辑文件。所有补充材料都可以在本书配套的网站上访问到。
5.为了简单性和一致性,除非特别声明,否则所有的源代码和列类文件都放在c:\book下。
6.在执行一个Java程序时,JVM首先会用一个称为类加载器(class loader)的程序类的字节码加载到内存中。如果你的程序中使用其他类,类加载程序会在需要它们之前动态加载它们。当加载该类后,JVM使用一个称为字节码验证器(bytecode verifier)的程序来检验字节码的合法性,确保字节码不会违反Java的安全规范。Java强制执行严格的安全规范 ,以确保来自网络的Java程序不会危害到你的计算机。
7.import语句有两种类型:明确导入(specific import)和通配符导入(wildcard import)。明确导入是指将某个单独的类放在import语句中,例如,下面的语句就是从包javax.swing中导入JOptionPane。
import javax.swing.JOptionPane;
通配符导入是指导入一个包中的所有类。例如,下面的语句就是从java.swing中导入所有类。
import java.swing.*;
除非要在程序中使用某个类,否则关于被导入包中的这些类的信息再编译时或运行时是不被读入的。导入语句只是告诉编译器在什么地方能找到这些类。声明明确导入和声明通配符导入在性能上没有什么差别的。
8.回顾程序清单1-1中的语句System.out.println(“Wcleome to java”); 中用到的System类。这个System类并没有被导入,那是因为它在java.lang包内。java.lang包内的所有类在每个Java程序小红都被隐式导入。
9.由于Java是区分大小写的,所以area、Area和AREA是完全不同的标示符。
10.在赋值语句中,左边变量的数据类型必须与右边值的数据类型兼容。例如,int x=1.0 是非法的,因为x的数据类型是整型int。在不使用类型转换的情况下,是不能把double值(1.0)赋给int变量的。类型转换将在2.11节介绍。
11.使用常量有三个好处:1)不必重复输入同一个值;2)如果必须修改常量值(例如,将PI的值从3.14改为4.14159),只需在源代码中的一个地方做改动;3)给常量赋一个描述性名字会提高程序易读性。
12.IEEE 754是美国电气电子工程师协会通过的一个标准,用于在计算机上标识浮点数。该标准已被广泛采用。Java采用32位IEEE 745表示float型,64位IEEE 754 表示double型。IEEE 745标准还定义了一些特殊值,这些值都在附录E中给出。
13.涉及浮点数的计算都是近似的,因为这些数没有以准确的精度来存储。例如:
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
显示的是0.50000000000001,而不是0.5,而
System.out.println(1.0 - 0.9);
显示的是0.99999999999999998,而不是0.1。
整数可以精确的存储。因此,整数计算得到的是精确的整数运算结果。
14.默认情况下,整型直接量是一个十进制整数。要标识一个八进制整数直接量,就用0(零)开头,而要表示一个十六进制整数直接量,就用0x 或 0X(零x)开头。例如,下面的代码将十六进制树FFFF显示为十进制数65535:
System.out.println(0xFFFF);
十六进制数、二进制数和八进制数都将在附录F中介绍。
15.double型值比float型值更精确。例如,
System.out.println(“1.0 / 3.0 is”+ 1.0 / 3.0);
显示结果为1.0 / 3.0 is 0.333333333333333.
System.out.println(“1.0F / 3.0F is”+ 1.0F / 3.0F);
显示结果为1.0F / 3.0F is 0.33333334。
16.float型和double型都是用来表示带有小数点的数。为什么把它们成为浮点数呢?因为这些数都是以科学计数法的形式存储的。当一个像50.534的数被转换成科学计数法的形式时,它就是5.0534e+1,它的小数点就移到(即浮动到)一个新的位置。
17.就像赋值运算符(=)一样,运算符(+=,-=,*=,/=,%=)既可以构成赋值语句,也可以构成赋值表达式。例如,在下面的代码中,第一行的x +=2是一个语句,而第2行中它就是一个表达式:
x += 2;  //Statement
System.out.println(x += 2); // Expression
18.类型转换不改变被转换的变量。例如,下面代码中的d在类型转换后值不变:
double d = 4.5;
int I = (int)d; // I becomes 4, but d is not changed, stil 4.5
19.将一个int型变量赋值给short型或byte型变量,必须显式地使用类型变量。例如,下述语句就会有一个编译错误:
int i = 1;
byte b = i; //Error because explicit casting is required
然而,只要整型直接量是在目标变量允许的范围内,那么将整型直接量赋给short型或byte型变量时,就不需要显式的类型转换。请参考2.8.2节。
20.自增和自减运算也可用在char型变量上,这会得到该字符之前或之后的统一码字符。例如,下面的语句显示字符b:
char ch = ‘a’;
System.out.println(++ch);
21.所有 的运算符都可以用在char型操作数上。如果两一个操作数是一个数字或字符,那么char型操作数就会被自动转换成一个数字。如果两一个操作数是一个字符串,字符就会与该字符串相连。例如,下面的语句:
int i = ‘2’ + ‘3’; // (int)’2’ is 50 and (int)’3’ is 51
System.out.println(“I is  “ + i); // i is 101
int j = ‘2’ + ‘a’; // (int)’2’ is 50 and (int)’a’ is 97
System.out.println(“j is  “ + j); // j is 99
System.out.println(j + “ is the Unicode for character” + (char)j );
System.out.println(“Chapter “ + ‘2’);
显示结果
i is 101
j is 99
99  is the Unicode for character c
Chapter 2
22.小写字母的统一码是从’a’ 的统一码开始,然后’b’、’c’…、’z’的统一码所构成的连续整数。大写字母的情况也是一样的。此外,’a’的统一码比’A’的统一码大,所以,’a’ - ‘A’与’b’ - ‘B’相等。因此,对应于小写字母ch的大写字母是(char)(‘A’ + (ch - ‘a’)).
23.也可以对字符进行比较。对字符进行比较和对字符统一码进行比较是一样的。例如:因为’a’的统一码大于’A’的统一码,所以’a’大于’A’。参见附录B就可以找到字符的顺序。
24.如前一章所示,一个char型值可以转换为int型值,反之亦然。但是,一个布尔型值不能转换为其他类型的值,其他类型的值也不能转换为布尔类型值。
25.德模佛定理是以印度出生的英国数学家和逻辑学家奥古斯都·德·模佛来命名的(1806 - 1871),这个定义可以用来简化表达式。定义表述如下:
!(condition1 && condition2)和!condition1  || !condition2  是一样的
!(condition1 || condition2)和!condition1  && !condition2  是一样的
例如:
!(n == 2 || n == 3) 和 n != 2 && n != 3是一样的。
!(n % 2 == 0 || n % 3 == 0) 和 n % 2 != 0 && n % 3 != 0是一样的。
25.符号?和:在条件表达式中同时出现。他们构成一种条件运算符,因为操作数有3个,所以称为三目运算符(ternary operator)。它是Java中唯一的三目运算符。
26.Java有自己内部计算表达式的方式。Java计算的结果和它对应的算术计算是一样的。感兴趣的读者可以参考补充材料III.B,以获得更多关于Java后台是如何计算表达式的讨论。
27.循环继续条件应该总是放在圆括号内。只有当循环体只包含一条语句或不包含语句时,循环体的花括号才可以省略。
28.for循环中的初始动作可以是0个或是多个以逗号隔开的变量声明语句或赋值表达式。例如:
for(itn i = 0, j = 0; (I + j < 10); I++, j++) {
    // Do something
}
for循环中每次迭代后的动作可以是0个或多个以逗号隔开的语句,例如:
for (itn i = 1; i < 100; Sysyeem.out.println(i), i++) ;
这个例子是正确的,但是它不是一个好例子,因为它增加了程序的阅读难度。通常,将声明和初始化一个变量作为初始动作,将增加或减少控制变量作为每次迭代后的操作。
29.如果省略for循环中的循环继续条件,则隐含地认为循环继续条件为true。因此,下面图a中给出的语句和图b中给出的语句一样,他们都是无限循环。但是,为了避免混淆,最好还是使用图c中的等价循环:
30.continue语句总是在一个循环内。在while和do-while循环中,continue语句之后会马上计算循环继续条件;而在for循环中,continue语句之后会立即先执行每次迭代后的动作,再计算循环继续条件。
31.很多程序设计语言都有goto语句。goto语句可以随意地将控制转移到程序中的任意一条语句上,然后执行它。这使程序很容易出错。Java中的break语句和continue语句是不同于goto语句的。它们只能运行在循环中或者switch语句中。break语句跳出整个循环,而continue语句跳出循环的当前迭代。
32.在其他某些语言中,方法称为过程(procedure)或函数(function)。带返回值的方法称为函数,返回值类型为void的方法称为过程。
33.我们经常会说“定义方法”和“声明变量”,这里我们谈谈两者的细微差别。定义是指被定义的条目是什么,而声明通常是指为被声明的条目分配内存来存储数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值