本文为Java核心技术·卷 I的读书笔记,配有代码
1.Java程序设计概述:
简单性:清除C++语法中所有不适当的特性(指针,结构,操作符重载,虚继承)
面向对象:重点放在数据(即对象)和对象的接口上
分布式:能够通过URL打开和访问网络上的对象
健壮性:指针->引用,编译器
安全性:
体系结构中立:Java编译器生成与特定的计算机体系结构无关的字节码指令(虚拟机)
可移植性:基本数据类型大小和有关运算明确说明
解释型:Java解释器执行字节码
高性能:字节码还可以动态翻译为机器码
多线程
动态性
2.Java程序设计环境
JDK/集成开发环境
3.Java的基本程序设计结构
public class Main { \\类名
public static void main(String[] args) { \\方法
System.out.println("Hello and welcome!");\\换行输出
int a = 1;
if (a == 2){
System.out.println(a);
}
for (int i = 1; i <= 5; i++) {
System.out.println("i = " + i);
}
}
}
Java区分大小写
public/private/protected 访问修饰符:控制程序的其他部分对这段代码(类、数据、方法)的访问级别
标准类名规范:多名词首字母大写,名字有意义
源代码的文件名必须与公共类的名字相同,并且一个源代码文件里只能有一个公共类
在类的源文件中必须包含一个main方法,也可以自定义类但在main中调用(main程序的入口)
代码块{},;一句结束
点号.用于调用方法,object.method(parameters),等价于函数调用
注释//, /* */
数据类型:8种基本类型(4种整型,2种浮点型,1种Unicode编码的字符类型char,一种表示真值的boolean类型)
Java整型:int(4字节),short(2字节),long(8字节),byte(1字节)-->全都是有符号整型
浮点类型:float(4字节),double(8字节)
char类型:'A'字符,"A"字符串
UTF-16每个字符用16位表示,代码单元
不要在程序中使用char类型,最好将字符串作为抽象数据类型处理
boolean类型:false和true,判定逻辑条件
整型值和布尔值之间不能进行相互转换
变量
每个变量都有一个类型type,使用变量前声明变量并用赋值语句对变量进行显式初始化
变量的声明尽可能靠近变量第一次使用的地方
关键字final指示常量,这个变量只能被赋值一次。一旦被赋值之后,就不能再改了(大写,类似const)
类常量->在一个类的多个方法中使用的常量 static final,定义在main方法外部
+,-,*,/,Math.sqrt(),Math.pow(x,a) ->静态方法 返回double
import static java.lang.Math.* 就不用加Math前缀了
数据类型之间的转换
实线无信息丢失,虚线可能由精度损失
强制类型转换
doubel x = 9.992;
int nx = (int) x; \\直接截断
int nx = (int) Math.round(x);\\舍入舍出
结合赋值与运算符
x += 4;//x = x+4;
int x=3;
x += 3.5; //int(x+3.5)
自加,自减 n++; n--; ++n; --n;
表达式中,前缀立马加1,后缀变量原来值再加一
==判断,!=,<,>,<=,>=,&&,|| 短路方式求值
三元操作符 condition ? expression1 : expression2
x<y ? x:y返回两者较小值
位运算:处理整型,可直接对组成整型数组的各个位完成操作。掩码得到整数的各个位
&,|,^,~ 与,或,异或,非
按位模式处理,二进制表示的n从右边数第四位数为1
int fourthBitFromRight = (n & 0b1000) / 0b1000;
利用&并结合适当的2的幂,可把其他位掩掉,只保留其中一位
<< ,>>位模式左移或右移
枚举类型,变量的取值只在一个有限的集合内:
enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE};
Size s = Size.MEDIUM;
字符串:Unicode字符序列
String e = "";
String greeting = "Hello";
String类的substring方法可以从一个较大的字符串提取出一个子串
String greeting = "Hello";
String s = S=greeting.substring(0,3);
左闭右开,子串长度b-a
Java语言允许+号拼接两个字符串
当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串
拼接多个字符串,用一个定界符分隔
String all = String.join("/","S","M","L","XL");
//"S/M/L/XL"
不可变字符串:String类没有提供用于修改字符串的方法,字符串可共享,->副本相同存储位置