Java核心技术 卷I 第10版 笔记

2018-04-19  本文已影响0人  prcraoyi

基于《Java核心技术 卷I 第10版》,边看边写,持续更新


• Java严格区分大小写
• 编译时需要提供文件名(如:Welcome.java);运行时只需要提供类名(如:Welcome),不要带扩展名 .java.class
• 主类名必须与.java文件名一致,并区分大小写
• 语句以分号(;)结束
• 强类型语言,必须为每一个变量声明一种类型
• 整型值和布尔值之间不能相互转换(不可用1和0代替true和false)


第2章 Java程序设计环境

1、下载安装JDK(建议装在D盘)

2、系统变量设置
右键“我的电脑”→“属性”→“高级系统设置”→“环境变量”,在“系统变量”中:
<1>新建变量名 JAVA_HOME
变量值:JDK安装位置(如:E:\Java\JDK
<2>修改 Path 变量
新建变量值 %JAVA_HOME%\bin 并且上移到第一个

3、设置完成后检查:
cmd窗口执行 java –version 显示版本
cmd窗口执行 javac –version 显示版本

4、安装库源文件(非必要)
src.zip 文件解压到 JDK 目录中的 src 文件夹(新建)中
(可用winrar直接解压或使用命令 jar –xvf src.zip

5、安装文档内容(非必要)
官网下载文档压缩包,将 docs 文件夹解压到 JDK 目录中(与 src 同一目录)

6、安装《Java核心技术》源代码(非必要)
horstmann.com/corejava.html 下载源代码并解压到任意位置


Linux下相关方法:

1、下载 .tar.gz 包,并解压到 /opt/ 目录,路径如:/opt/jdk-10/bin/

2、设置路径
~/.bashrc(或~/.bash_profile) 文件在最后添加内容:

export PATH=/opt/jdk-10/bin:$PATH

3、安装库源文件

cd ~
mkdir javasrc
cd javasrc
jar -xvf jdk/src.zip    //jdk/src.zip指src.zip文件的路径

7、Eclipse相关
<1>下载Eclipse IDE for Java Developers(zip版)
<2>汉化:
从Eclipse Babel Project下载中文版语言包,替换相应文件
<3>Eclipse导入现有代码文件:
“File”→“New”→“Java Project”→输入项目名,不勾选“Use default location”→“Browse”到源文件所在目录→“Finish”

8、命令行HelloWorld
<1>文本编辑器编写代码,扩展名为.java
<2>cmd窗口编译java源代码

javac filename.java

编译完成后生成 filename.class 文件

※ .java文件名与类名一致,并且区分大小写

<3>运行:java filename //不加扩展名


第3章 Java的基本程序设计结构

1、类的标准命名规范:类名是以大写字母开头的名词。如果名字由多个单词组成,每个单词的第一个字母都应该大写(骆驼命名法)

2、源代码文件名称必须与公共类(public class)的名字相同,并用.java作为扩展名,且区分大小写。在类的源文件中必须包含一个main方法,可以在main方法中调用自定义的其它方法

※ main方法必须声明为 public,声明main方法的格式如下:

public class ClassName
{
    public static void main(String[] args)
    {
        program statements
    }
}

3、点号(.)用于调用对象的方法,格式如下:

object.method(parameters)

Java的方法中可以没有参数,也可以有一个或多个参数。即使没有参数也要有括号

4、Java注释:(三种方法)
<1>双斜线(//)从//开始到结尾
<2>用(/)开始,(/)结尾,表示长注释 <不可嵌套>
<3>以(/*)开始,(/)结尾的注释,可以自动生成文档

5、数据类型(共8种)
<1>整型:int(4字节);short(2字节);long(8字节);byte(1字节)
<2>浮点型:float(4字节);double(8字节)
<3>字符类型:char
<4> boolean 类型(整型值和布尔值之间不能相互转换)

※ Java没有任何无符号形式的 intlongshortbyte 类型

6、用于表示溢出和出错情况的三个特殊的浮点数值:
<1>正无穷大(常量 Double.POSITIVE_INFINITY
<2>负无穷大(常量 Double.NEGATIVE_INFINITY
<3> NaN(不是一个数字)(常量 Double.NaN

示范:

if(x==Double.NaN)//错误表述,所有“非数值”的值都认为是不相同的
if(Double.isNaN(x))//正确表述,检查x是否为一个数字

7、Unicode 转义序列会在解析代码之前得到处理

8、变量声明方法:变量类型+变量名 ,如:

boolean done;//必须以分号结尾
int i, j;//同时声明2个int变量,合法,但不提倡

※ 字符 $ 只用在Java编辑器或者其他工具生成的名字中

9、变量名规则:一个以字母开头,并由字母或数字构成的序列,(字母包括下划线(_)),区分大小写,长度不限

※ 可以用 Character 类的 isJavaIdentifierStartisJavaIdentifierPart 方法来检查哪些 Unicode 字符属于Java中的“字母”

10、变量初始化:声明变量后,必须用赋值语句对变量进行显式初始化。
也可以将变量声明和初始化放在同一行,如:int i = 12;
声明可以放在使用之前的任何地方。

11、常量定义及赋值:使用关键字 final,常量只能被赋值一次。习惯上,常量名使用全大写,如:

final double PI = 3.14;

12、类常量:关键字 static final,可在一个类中的多个方法中使用。定义于方法的外部。示例:

public static final double PI = 3.14;

如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量

13、整数被0除,将产生一个异常;浮点数被0除,将会得到无穷大或NaN结果。

注释:strictfp关键字:标记的方法或类必须使用严格的浮点计算来生成可再生的结果,如:

public static strictfp void main(String[] args)

14、n%2 n对2取模,当n为负数时,表达式的值为-1

15、Math类的方法:
<1>三角函数:

Math.sin    正弦
Math.cos    余弦
Math.tan    正切
Math.asin   反正弦
Math.acos   反余弦
Math.atan   反正切
Math.atan2(y,x) 向量(x,y)与x轴的夹角

<2>指数函数以及它的反函数——自然对数以及以10为底的对数

Math.exp
Math.log(a) a的自然对数(底数是e)
Math.log10(a)   a的底数为10的对数
Math.log1p(a)   a+1的自然对数

<3>p常量的近似值:Math.PI
<4>e常量的近似值:Math.E
<5>绝对值函数:Math.abs
<6>开根号:

Math.cbrt(x)    开立方
Math.sqrt(x)    开平方
Math.hypot(x,y)

<7>最值:

Math.max(a,b)   最大值
Math.min(a,b)   最小值

<8>幂:

Math.exp(x) e^x的值
Math.expm1(x)   e^x-1的值
Math.pow(x,y)   x^y的值

注释:不必在数学方法名和常量名前添加前缀“Math”,只需在源文件顶部添加代码:

import static java.lang.Math.*; //静态导入,第4章
System.out.println(“The square root of \u03C0 is ”+sqrt(PI));

<待补充,P40相关>

16、<数据类型转换>P40

17、<强制类型转换>P41

18、二元运算符:(右结合运算符)

+=,-=,*=,%=    例:x+=4;    //x=x+4;

19、自增自减运算符:

20、关系运算符:

==(双等,检测相等性);
!=(检测不相等);
>;<;>=;<=
逻辑与(&&);
逻辑或(||);//&&比||优先级高

21、三元运算符:

condition ? expression1 : expression2

如果condition的值为true,执行expression1,否则执行expression2,如:

x<y ? x : y;  //返回x和y中较小的一个

22、位运算符:P43

&(and);|(or);^(xor);~(not)
位模式左移或右移(>>或<<)(>>用符号位填充高位)
>>>运算符用0填充高位,(不存在<<<运算符)

运算符的优先级:


运算符优先级.png

23、枚举类型(第5章)

24、字符串
没有内置的字符串类型,标准库中提供了一个预定义类,String,例如:

String greeting = "Hello";

每个用双引号括起来的字符串都是 String 类的一个实例

<1>子串(substring方法)

String greeting = "Hello";
String s = greeting.substring(0,3);    //Hel,不包含3,从0开始计数

<2>拼接(+)

System.out.println("The answer is"+answer);

使用定界分隔符(join):

String all = String.join("/","S","M","L","XL");    //"S/M/L/XL"

<3>不可变字符串(例:将Hello改为Help!)

String greeting = "Hello";
greeting = greeting.substring(0,3)+"p!";

<4>检测字符串是否相等:(equals 方法)

s.equals(t)    //比较字符串s和t,返回true或false

检测字符串是否相等,不区分大小写(equalsIgnoreCase 方法)

"Hello".equals("hello")    //返回false
"Hello".equalsIgnoreCase("hello")    //返回true

双等号(==)只能确定两个字符串是否放置在同一个位置上

<5>空串与null串

检测空串(""):

if (str.length() == 0)    或    if (str.equals(""))

null表示目前没有任何对象与该变量关联。检测方法:

if (str == null)

检测一个字符串既不是null,也不为空:

if (str != null && str.length() != 0)
上一篇下一篇

猜你喜欢

热点阅读