【2】Java基础
原始值:原始值由裸常数表示。箭头只是对值的引用
对象值:是一个用其类型标记的圆。
重新分配
不变的价值:String是不可变类型的示例,该类型的值一旦创建就永远不会更改。
一次分配且永不重新分配的变量。要使引用不可变,请使用关键字声明final:
可变值
Java的原始类型
void不是基本数据类型
运算:是接受输入并产生输出的函数(有时会自己更改值)。操作的语法各不相同,但是无论如何编写,我们仍然将它们视为函数。 • 作为中缀,前缀或后缀运算符。 例如,a + b调用操作+ : int × int → int。 • 作为对象的一种方法。
例如,bigint1.add(bigint2)调用操作add: BigInteger × BigInteger → BigInteger。
• 作为功能。 例如,Math.sin(theta)调用操作sin: double →
double。在这里,Math不是对象。是包含sin函数的类。
Java str.length() 与Python len(str)对比。
类似的这些操作在某种意义上是重载的,因为相同的操作名称用于不同的类型。
Java是一种静态类型的语言。所有变量的类型在编译时(程序运行之前)都是已知的,因此编译器也可以推导出所有表达式的类型。例如a和b声明为int s,则编译器得出的结论a+b是也是int。
自动检查
• 静态检查:在程序运行之前会自动发现该错误。(通常与类型有关) 捕捉:语法错误(标点或单词错误)名称错误 参数数量、类型错误
返回类型错误 • 动态检查:执行代码后会自动发现错误。 捕捉:非法参数值(除0)无法代表的返回值 超出范围的索引 null对象引用上调用方法
• 不检查:该语言根本无法帮助您找到错误。您必须自己当心,否则将得到错误的答案 静态捕获错误 比 动态捕获 更好,而动态捕获 比 不捕获
好。
注意:
i. 整数除法。 ii. 整数溢出。
iii. 浮点类型中的特殊值。像这样的浮点类型double具有几个不是实数的特殊值:(NaN代表“非数字”)POSITIVE_INFINITY,和NEGATIVE_INFINITY。因此,当您对double预期会产生动态错误的操作进行某些操作(例如除以零或取负数的平方根)时,将获得这些特殊值之一。如果继续使用它进行计算,最终将得出错误的最终答案。
数组与集合
数组是另一种类型T的定长序列 int[] a = new int[100]; 索引: a[2] 分配: a[2]=0
长度:a.length(与string.length()不同) 缺点:会产生数据溢出
列表是另一种类型的变长序列T,List类型,不是固定长度的数组。 List list = new
ArrayList(); • 索引: list.get(1) • 分配: list.set(1, 0) • 长度:
list.size()
https://docs.oracle.com/javase/tutorial/java/data/numberclasses.html>
Number类
子类:byte double float integer short long
BigDecimal、BigInteger用于高精度计算。AtomicInteger、AtomicLong用于多线程应用程序
使用number对象原因:
1.作为期望对象的方法的参数
2.使用由类定义的常量,例如MIN_VALUE和MAX_VALUE(数据类型的上限和下限)
3.使用类方法在其他原始类型之间进行值转换
实现方法:
(红色部分可以是任意子类类型)
转换方法
输出:system.out + format(print、println)