JAVA核心技术卷一~三章读书笔记

JAVA核心技术卷一~三章读书笔记

第一章

1.Java 程序平台
是一种功能齐全的出色语言,是一个高质量的执行环境, 还提供了一个庞大的库
2. Java“ 白皮书” 的术语

  • 简洁性 :
    无头文件、 指针运算(甚至指 针语法)、结构、 联合、操作符重载、 虚基类…
    支持在小型机上独立运行。

  • 面向对象

  • 分布式

  • 健壮性:
    采用的指针模型可以消除重写内存 和损坏数据的可能性。

  • 安全性:
    不可信代码在一个沙箱环境中执行,在 这里它不会影响主系统

  • 体系构中立:
    编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。

  • 可移植性
    Java中的 int 永远为 32 位的整数,而在 C/C++ 中, int 可能是 16 位整数、 32 位整 数, 也可能是编译器提供商指定的其他大小:

  • 解释型

  • 高性能

  • 多线程

  • 动态性
    库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响


第二章

  • JAVA术语
    在这里插入图片描述
  • Linux:64位,tar.gz
  • 如何使用开发环境:
    .从命令行编译并运行 Java 程序。

1 ) 打开终端窗口。(ctr+alt+T)
2 ) 进入源代码目录
3 ) 输入下面的命令: javac Weicome.java java Welcome

编译
启动虚拟机
执行

注意:区分大小写

第三章:基本程序设计结构

· 简单的命名语法规则:

  1. 源代码的文件名必须与公共类的名字相同,并用.java 作为扩展名。
  2. Java 区分大小写。
  3. 关键字 class 后面紧跟类名。
  4. 名字必须以字母开头,后 面可以跟字母和数字的任意组合。
    长度基本上没有限制,但是不能使用 Java 保留字(例如, public 或 class) 作为类名 。
  5. 标准的命名规范:类名是以大写字母开头的名 词。如果名字由多个单词组成,每个单词的第一个字母都应该大写。

·三种注释

  1. //开始—本行末尾
  2. /* 开始— */结束 【此方法不能嵌套】
  3. /** 开始— */结束

· 数据类型
整型:
int
short
long:长整型数值有一个后缀 L 或 1 (如 4000000000L)
十六进制数值有一个前缀 Ox 或 0X (如 OxCAFEL )
八进制有一个前缀 0
加上前缀 0b 或 0B 就可以写二进制数。例如,0b1001就是 9
可以为数字字面量加下划线,如用 1_000_000 【100万】byte

浮点类型:
double
float:有后缀F或f,D或d
【无后缀默认为double】

· 在二进制系统中无法精确地表示分数 1/10
· Double_POSITIVE_INFINITY正无穷
· Double.NEGATIVEJNFINITY 负无穷
· Double.NaN (以及相应的 Float 类型的常量)

不能这样检测一个特定值是否等于 Double.NaN:
if (x = Double.NaN) // is never true
所有“ 非数值” 的值都认为是不相同的。
然而,可以使用 Double.isNaN 方法:
if (Double.isNaN(x)) // check whether x is “not a number”

字符类型
char:
- 可以表示为十六进制值,其 范围从 \u0000 到 \Uffff。
- 用 ‘ ’引用。

boolean 类:
true
false

在 C++ 中, 数值甚至指针可以代替 boolean 值。值 0 相当于布尔值 false, 非 0 值相当于布尔值 true, 在 Java 中则不是: if (x = 0) // oops… meant x = 0 在 C++ 中这个测试可以编译运行, 其结果总是 false: 而在 Java 中, 这个测试将不 能通过编译, 其原因是整数表达式 x = 0 不能转换为布尔值

变量:

· 以分号结束
· 变量名必须是一个以字母开头并由字母或数字构成的序列
· 不能使用 Java 保留字作为变量名
· 大小写敏感

变量初始化:
声明一个变量之后,用赋值语句对变量进行显式初始化, 不要使用未初始化的 变量。

常量:

关键字 final 表示这个变量只能被赋值一次,一旦赋值,不能更改.
某个常量可以在一个类中的多个方法中使用,通常将这些常量称为 类常量。可以使用关键字 static final设置一个类常量。
类常量的定义位于 main方法的外部。在同一个类的其他方法中也可 以使用这个常量。如果一个常量被声明为 public,那么其他类的方法也可以使用这个 常量.

运算符:

  1. +,-,*,/
    [数/0=NAN或无穷大]
  2. ++,–
    [前缀形式会先完成加 1; 而后缀形式会使用变量原来的值]
  3. 关系运算符:==,!=&&,||,三元操作符?:
    [如果条件为 true, 下面的表达式
    condition ? expression1 : expression2
    就为第一个表达式的值,否则计算为第二个表达式的值]
  4. 位运算符:
    & (“and”)
    | (“or”)
    ^ (“XOr”)
    ~(“not”)
    ‘>>’ 和’<<’ 运算符将位模式左移或右移
    ‘>>>’ 运算符会用 0 填充高位,这与》 不同,它会用符号位填充高位。不存在<<< 运算符。
  5. 括号与运算符级别:
    &&优先于||
    从左到右

在这里插入图片描述

  1. 枚举类型:
    Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者 null 值,null 表示这 个变量没有设置任何值。
  2. 数学函数:
    在这里插入图片描述

floormod:求余数
pow:幂运算

  1. 数值类型的转换:
    在这里插入图片描述

  2. 强制类型转换:
    在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名

字符串

  1. " "引用

  2. 子串:
    String类的 substring方法可以从一个较大的字符串提取出一个子串。
    例如: String greeting = “Hello”; String s = greeting.substring(0, 3)

  3. 拼接:
    -使用 + 号连接(拼接)两个字符串
    -如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静 态join方法:
    String all = String.join(" / ", “S”, “M”, “L”, “XL”);
    // all is the string “S / H / L / XL”

  4. 不可变字符串:
    String类对象称为不可变字符串

  5. 使用 equals方法检测两个字符串是否相等
    返回值为true/false
    [一定不要使用= 运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串 是否放置在同一个位置上。当然, 如果字符串放置在同一个位置上, 它们必然相等]

  6. 空串与 Null 串:
    -空串 “” 是长度为 0 的字符串
    -null是一个存放在字符串中的值:表示目前没有任何对象与该变量关联
    -检查一个字符串既不是 null 也不为空串:
    if (str != null && str.lengthO != 0)

  7. 码点与代码单元

  8. StringAPI
    在这里插入图片描述
    在这里插入图片描述

  9. 构建字符串:

~控制流程

  1. 块作用域:
    块(即复合语句)是指由一对大括号括起来的若干条简单的 Java语句
    [不能在嵌套的两个块中声明同名的变量]
  2. 条件语句:if (condition) statement
  3. 循环:
    -while {condition) statement ;
    -do statement while {condition);
    -for:[如果在 for 语句内部定义一个变量, 这个变量就不能在循环体之外使用]
    -swich
  4. 中断控制流程语句

大数值:
aVa.math 包中的两个类:
Biglnteger和 BigDecimaL 这两个类可以处理包含任意长度数字序列的数值。
Biglnteger类实现了任意精度的整数运算。
BigDecimal 实现了任意精度的浮点数运算。
【只能使用大数 值类中的 add 和 multiply 方法运算】

数组

  1. new 运算 符创建数组
    int[ ] a = new int[100];

  2. 数组长度不要求是常量: newint[n] 会创建 一个长度为 n 的数组。

  3. 声明:
    int[] a;

    int a[];

  4. for each 循环

  • for (variable : collection) statement
  1. 数组初始化以及匿名数组
    new int[] { }
  2. 数组拷贝
    使用 Arrays 类的 copyOf方法:
    int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length);
    【 第 2 个参数是新数组的长度】
    增加数组的大小:
    luckyNumbers = Arrays.copyOf(luckyNumbers, 2 * luckyNumbers.length);
    如果数组元素是数值型,那么多余的元素将被赋值为 0 ;
    如果数组元素是布尔型,则将赋值 为 false。
    如果长度小于原始数组的长度,则只拷贝最前面的数据元素。
    【Java 中的 [ ]运算符被预定义为检查数组边界,而且没有指针运算, 即不能通过 a 加 1 得到数组的下一个元素。】
  3. 命令行参数
  4. 数组排序
    使用 Arrays类中的 sort 方法:
    int[] a = new int[10000];
    Arrays.sort(a)
  5. 多维数组
    声明:
    eg:double[][] balances
    【在调用 new 对多维数组进行初始化之前不能使用】
    初始化:
    eg:balances = new double[NYEARS][NRATES]:
    之后可以利用两个方括号访问每个元素
  • for each 循环语句不能自动处理二维数组的每一个元素。
    它是按照行, 也就是一维数组处理的
    要想访问二维教组 a 的所有元素, 需要使用两个嵌套的循环
  • 要想快速地打印一个二维数组的数据元素列表, 可以调用: System.out.println(Arrays.deepToString(a));
  1. 不规则数组:
    每一行有不同的长度

Java 实际上没有多维数组,只有一维 数组。多维数组被解释为“ 数组的数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值