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

基于《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 类型(整型值和布尔值之间不能相互转换)

  • 浮点型(float)数值以 Ff 作后缀
  • 无后缀的浮点数默认为 double 型(或以 Dd 作后缀)
  • 长整型(long)数值以 L 或l作后缀
  • 十六进制数以 0x0X 作前缀
  • 八进制数以 0 为前缀
  • 二进制数以 0b0B 作前缀
  • 可以为数字字面加下划线,以方便阅读,编译器会自动忽略(1_000_000

※ 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、自增自减运算符:

  • 前缀(如:++n):先加1,再取用
  • 后缀(如:n++):先取用,再加1

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!";
  • 将来自文件或键盘的单个字符或短的字符串汇集成字符串(见3.6.9)

<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)
  • 先检测str不为null,如果在一个null值上调用方法,会出现错误
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容