java核心技术读书笔记_Java核心技术 卷I(第10版)读书笔记

小豆工作以来发现自己基础不扎实,利用空余时间再次阅读该书,目的为了扎实巩固基础,之前读过却未作笔记,对该书毫无记忆,所以决定边读边总结,持续更新。

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

1.命名:

类名是以大写字母开头,可以跟字母和数字的任意组合,不能使用java保留字段作为类名,多个单词应该采用骆驼命名法(如:FirstSample)。

变量名是以字母开头,并由字母或数字构成的序列,大小写敏感,如果想要知道哪些Unicode字符属于Java中的“字母”,可以使用Character类的isJavaldentifierStart 和 isJavaldentifierPart 方法来检查。

2.数据类型:java是强语言类型,必须为每个变量声明一种类型,共有8种基本类型:4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char,和1种用于表示真值的boolean类型,布尔类型结果为false/true,用来判断逻辑条件,不能和整型值相互转换:

d0a1497920d9

java整型.png

d0a1497920d9

浮点类型.png

注意:一个正整数除以0的结果是正无穷大,计算0/0或者负数的平方根结果是NaN(不是一个数字),所有“非数值”的值都认为是不相同的,却可以使用Double.isNaN方法

if(Double.isNaN(x)) // check whether x is "not a number"

浮点数值不适合用于无法接受舍入误差的金融计算,如果在数值计算中不允许有任何的舍入误差,应该使用BigDecimal类

3.变量:

变量初始化:一行中声明一个变量可以提高程序的可读性,变量的声明尽可能靠近变量第一次使用的地方,是一种良好的程序编写风格。

常量:关键字final,只能够被赋值一次,使用全大写,若希望某个常量在一个类中的多个方法使用,可以用关键词static final设置一个类常量。

4.运算符:

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

类型转换:实线为无信息丢失转换,虚线可能有精度损失的转换

d0a1497920d9

数值类型之间的合法转换.png

强制类型转换:会导致信息丢失

double x = 9.99;

int nx = (int) x;

int nxx = (int)Math.round(x);//如要得到最接近的值,需要使用Math.round():,该方法返回long类型,强转为int

nx = 9;

nxx = 10;

自增自减运算符:尽量避免使用++运算符,会带来代码的疑惑。

int m =7;

int n = 7;

int a = ++m;// a is 8,m is 8

int b = n++; // b is 7,n is 8

关系运算符和位运算符:

关系运算符,&& || 遵守“短路”规则

位运算符,>>>运算符会用0填充高位,而>>运算符会用符号位填充高位,不存在<<

括号与运算符级别:

d0a1497920d9

运算符优先级.png

枚举类型:

enum Size{ SMALL,MEDIUM,LARGE};

Size s = Size.SMALL;//声明这种类型的变量示例

5.字符串

拼接:如果需要把多个字符串放在一起,用一个定界符分隔,使用静态join方法:

String all = String.join("/","S","m","l");//all is the string "S/m/l"

想要检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法,“hello”.equalsIgnoreCase("Hello");

注意:不能够使用 == 运算符检测两个字符串是否相等,== 只能够确定他们的存储空间的位置是否相同,字符串值相等不一定位置相等(当虚拟机始终将相同的字符串共享,就可以使用,但不建议使用)。

码点和代码单元:

String greeting = "Hello";

int n = greeting.length。; // i is 5,返回采用 UTF-16 编码表示的给定字符串所需要的代码单元数量

int cpCount = greeting.codePointCount(0, greeting.length());//得到实际的长度,即码点数量

调用 s.charAt(n) 将返回位置 n 的代码单元,n 介于 0 ~ s.length()-1 之间。

例如:

char first = greeting.charAt(0); // first is 'H'

char last = greeting.charAt(4); // last is ’o

要想得到第 i 个码点,应该使用下列语句

int index = greeting.offsetByCodePoints(int startlndex, int cpCount)//返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。

int cp = greeting.codePointAt(index);//返回从给定位置开始的码点。

6.控制流程:

多重选择:switch ..case..break, case标签可以为:

• 类型为 char、byte、 short 或 int 的常量表达式。

• 枚举常量。

• 从 Java SE 7开始, case 标签还可以是字符串字面量。

7.大数值:java.math 包中的两个很有用的类:Biglnteger 和 BigDecimal 这两个类可以处理包含任意长度数字序列的数值。

Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。

遗憾的是,不能使用人们熟悉的算术运算符(如:+ 和 *) 处理大数值。 而需要使用大数值类中的 add 和 multiply 方法。

Biglnteger c = a.add(b); // c = a + b

Biglnteger d = c.multiply(b.add(Biglnteger.valueOf(2))); // d = c * (b + 2)

在进阶的路上,欢迎各位大侠指正

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值