Java基础知识笔记

1、class 类名必须与文件名一样
  javac Hello.java   -  javac命令,编译代码,会生成一个 jvm 运行的 class 文件
  java Hello - java命令,运行代码


2、java运行机制 - java既有编译型特点,也有解释型特点
  高级语言分 2 种:编译型、和解释型
  编译型和解释型的区别就在于执行时机不一样。
  以一本书作比喻:比如中国人L创作了《三体》,美国人M想看,但是M不懂中文,那么M有 2 种方式去读这本书。
  第一种,《三体》直接翻译印制为美文版出书,M要看就去买翻译的美文版这本书,直接看;
  第二种,M请一个翻译官F,F边看边翻译给M。
  经过这 2 种方式,M都可以看完《三体》这本书,但是这 2 种方式各有优缺点:
  第一种方式的缺点,就是比如L修改了一部分《三体》,那么翻译的美文版,就得重新翻译印制成书,M想看就只能再次购买新出的书
  第二种方式的缺点就是M看到后面想再从前面看,那么F也得翻到前面重新翻译给M,并且F如果不翻译了,那么M也看不了了。


3、java程序运行机制


(1)源程序java文件 - 经过java编译器 - 编译为字节码(class文件)
  这个class文件才是真正被执行的文件,所以java程序都会经过一个预编译阶段生成class文件 - 机器语言与java源代码之间的字节码文件
(2)class执行的时候,就会经过一系列处理,走到 JVM虚拟机,jvm虚拟机会将这个class类加入到 JVM 的类装载器 - 之后经过字节码校验器校验是否出错 - 在交给解释器解释给操作系统,解释一步执行一步
  所以Java就是既有编译型语言的特点,也有解释型语言的特点。


4、数据类型
  强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
  弱类型语言:如javascript
  java的数据类型分为两大类:基本类型、应用类型

  什么是字节:
  位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数
  字节(byte):是计算机 数据处理 的基本单位,用B表示
  1B(字节) = 8 bit(位)
  字符:是指计算机中使用的字母、数字、字和符号
  1bit表示1位,1Byte表示1个字节,1B=8b,1Kb =1024B
5、数据类型问题记录
(1)整数拓展:进制问题 - 二进制(0b开头) 十进制  八进制(0开头) 十六进制(0x开头)

int i = 10;
int i2 = 010;  // 八进制, 为8
int i3 = 0x10; // 十六进制,为16

(2)浮点数拓展:银行业务,浮点数计算怎么表示
  浮点数的加减乘除会存在问题,因为浮点数是有限的离散的,而有很多数据是无限的,浮点数都会存在舍入误差,它是接近但不等于
  最好完全不使用浮点数进行比较。
  需要使用java内置的类BigDecimal去进行浮点数的计算
(3)字符可以强制转换为数字。
  原因:所有的字符本质还是数字
  编码问题  -  Unicode编码表(97 = a)-  2字节  - 65536


6、数据类型转换
  强制转换:(类型)变量名   -   低  -> 高
  自动转换:高  ->  低
注意:
(1)不能对布尔值进行转换
(2)不能把对象类型转为不相干的类型
(3)在把高容量转为低容量的时候,是强制转换;把低容量转为高容量的时候,是自动转换
(4)转换的时候可能存在内存溢出,或者精度丢失问题
注意:
(1)操作比较大的数的时候,注意溢出问题(JDK7新特性,数字之间可以用下划线_分割)


7、字符串连接符的一个小细节问题
比如:a=10,b=20
那么:'' + a + b = '1020',但是:a + b + '' = '30'

8、包的本质就是文件夹
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间
一般利用公司域名倒置作为包名:com.modb.user
为了使用包里的成员,需要先使用import语句导入该包

原文地址:https://www.cnblogs.com/goloving/p/14772655.html