Java语言的特点:
- 完全面向对象
- 支持分布式
- 健壮型
- 安全
- 跨平台性
Java语言的跨平台原理
- 跨平台
- JVM
java是跨平台的语言 (one write run anywhere)
JVM是跨平台的语言
如何修改源文件的字符编码
方法一: 在Notepad++等编辑器中,修改源文件的字符编码
方法二:javac -encoding utf-8 Review01.java (编译的时候设置)
JAVA中关键字(keyword):
被java语言赋予了特殊含义的字符串(单词)
- 例如:HelloWorld案例中,出现的关键字有
public
、class
、static
、void
等,这些单词已经被Java定义,具有明确的含义。- 关键字的特点:全部都是
小写字母
。(关键字一定全是小写的)- 关键字一共50个,其中const和goto是保留字。
标识符( identifier)
标识符概念:即给类、变量、方法、包等命名的字符序列,称为标识符。
- 标识符的命名规则(必须遵守)
(1)组成:英文大小写字母,数字,下划线_,美元符号$
(2)数字不能开头
(3)严格区分大小写
(4)不能使用Java的关键字(包含保留字)和特殊值
- 标识符的命名规范(遭受鄙视)
(1)见名知意
(2)类名、接口名等:每个单词的首字母都大写(大驼峰法则),形式:XxxYyyZzz,
例如:HelloWorld,String,System等
(3)变量、方法名等:从第二个单词开始首字母大写(小驼峰法则),其余字母小写,形式:xxxYyyZzz,
例如:age,name,bookName,main
(4)包名等:每一个单词都小写,单词之间使用点.分割,形式:xxx.yyy.zzz,
例如:java.lang
(5)常量名等:每一个单词都大写,单词之间使用下划线_分割,形式:XXX_YYY_ZZZ,
例如:MAX_VALUE,PI
常量的分类:
自定义常量:通过final关键字定义(后面在面向对象部分讲解)
注意事项:
字符常量,单引号里面有且仅有一个字符
空常量,不可以在输出语句中直接打印
注意事项:
- System.out.println(); 换行输出语句,括号内可以什么都不写,只做换行处理
- System.out.println(); 直接输出语句,括号内什么都不写的话,编译报错
- 不能同时输出多个数据,可以使用 + 把多个数据连接起来,变成为一个数据进行输出。
变量的使用注意事项:
- 先声明后使用 如果没有声明,会报“找不到符号”错误
- 在方法中使用变量之前必须初始化 如果没有初始化,会报“未初始化”错误(成员变 量中会有默认初始化值)
- 变量有作用域 作用域为变量直接所属的{}范围内,如果超过作用域,也会报 “找不到符号”错误
- 在同一个作用域中不能重名 同一个{},不能同时声明两个同名变量
计算机世界中只有二进制。
二进制: 以0b或0B开头
八进制: 很少使用 表示方式:以0开头
十六进制 表示方式:以0x或0X开头
打印的时候可以用这几种方式可以将相关对应的进制转换成10进制
计算机存储单位
位(bit):是数据存储的最小单位,也就是一个二进制位。其中8 bit 就称为1个字节(Byte)。
字节(Byte):是计算机信息技术用于计量存储容量的一种计量单位,1字节等于8bit。
转换关系
8 bit = 1 Byte
1024 Byte = 1 KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
二进制数据存储
计算机底层都是使用二进制进行数据的存储的。不同类型的数据,存储方式也有不同。
整数存储
计算机底层存储整数并不是把整数转换为二进制直接存储,而是以二进制的补码形式进行存储。
原码:把十进制转为二进制,然后最高位设置为符号位,1是负数,0是正数。
反码:正整数的反码与原码相同,负整数的反码在原码的基础上,符号位不变,其余位取反(0变1,1变0)
补码:正整数的补码与原码相同,负整数的补码为其反码+1
分为两种情况:
(1)无符号:不考虑正负数
0000 0000 ~ 1111 1111 ==> 0~255
(2)有符号:-128~127
0000 0000 ~ 0111 111 ==> 0~127
1000 0001 ~ 1111 1111 ==> -127 ~ -1 (补码形式存储)
1000 0000 ==> -128 特殊值,最高位既是符号位,又是数值位
如何存储小数(了解)
为什么float(4个字节)比long(8个字节)的存储范围大?
为什么double(8个字节)比float(4个字节)精度范围大?
为什么float和double不精确
float型和double型数据的存储方式
- 符号位(Sign) : 0代表正,1代表为负
- 指数位(Exponent):用于存储科学计数法中的指数数据,并且要加上偏移量(float偏移127,double偏移量1023)
- 尾数部分(Mantissa):尾数部分
而双精度double的存储方式为:
在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。
就是将人类的文字和一个十进制数进行对应起来组成一张表格。
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
(1)\u字符的Unicode编码值的十六进制型
char c = '\u674e';
char c = '尚';(2)直接给char类型变量赋值十进制的0~65535之间的Unicode编码值
例如:'尚' 的编码值是23578
'a'的编码值是97
(3) char 的底层存储的是编码值
0:48
A: 65
a: 97
基本数据类型:包括 整数
、浮点数
、字符
、布尔
。
引用数据类型:包括 类
、数组
、接口
。
Java中的默认类型:整数类型是int
、浮点类型是double
整型系列
byte:字节类型 1个字节 -128~127
short:短整型类型 2个字节 -32768~32767
int:整型 占内存:4个字节
long:整型 占内存:8个字节
注意:如果要表示某个超过int范围的常量整数它是long类型,那么需要在数字后面加L
浮点型系列(小数)
(1)float:单精度浮点型 占内存:4个字节 精度:科学记数法的小数点后6~7位
注意:如果要表示某个常量小数是float类型,那么需要在数字后面加F或f,否则就是double类型
(2) double:双精度浮点型 占内存:8个字节 精度:科学记数法的小数点后15~16位
单字符类型:char
(3)占内存:2个字节
布尔类型
boolean:只能存储true或false
虽然计算机底层使用0和1表示false和true,但是在代码中不能给boolean类型的变量赋值0和1,只能赋值false和true
数据类型 变量名 = (数据类型)被强转数据值;
运算符:是一种特殊的符号,用以表示数据的运算、赋值和比较等。
表达式:用运算符连接起来的式子
&&和&区别,||和|区别
短路与,短路或运算符左边表达式结果可以确定最终结果,则运算符右边表达式不再进行运算,效率高
&&
和&
区别:
&&
和&
结果一样,&&
有短路效果,左边为false,右边不执行;&
左边无论是什么,右边都会执行。
||
和|
区别:
||
和|
结果一样,||
有短路效果,左边为true,右边不执行;|
左边无论是什么,右边都会执行。
位运算符的运算过程都是基于补码运算,但是看结果,我们得换成原码,再换成十进制看结果
从二进制到十进制都是基于原码
byte,short,char在计算时按照int类型处理
位运算直接对二进制进行位移操作实现数值运算,所以运算效率高
如何区分&,|,^是逻辑运算符还是位运算符?
如果操作数是boolean类型,就是逻辑运算符,如果操作数是整数,那么就位运算符。
无符号右移:>>>
运算规则:往右移动后,左边空出来的位直接补0,不看符号位
正数:和右移一样
负数:右边移出去几位,左边补几个0,结果变为正数