1.从加减乘除到变量
1 | public class MathCacl { |
- 如果我们想让计算机输出5+6的计算结果
- 我们应该去除双引号
基本数据类型
- int:用来表示一个整数,取值范围在-2^31~2^31-1
关键字和标识符
标识符
- 由大小写英文字符,数字和下划线组成,区分大小写,不能以数组开头
- 可以用作java中的各种东西的名字,如类名,方法名
- 标识符是区分大小写的
关键字是java语法中的保留字,不能用来做名字
- public class static void int
变量
- 如何创建变量: int a;
- 如何给变量一个值 : int a = 10;
- 如何使用变量 : 直接使用变量的名字
2.再谈计算加减乘除的程序
- 表达式:java中最基本的运算,比如一个加法运算表达式。1+1,a+b
- 语句:类似于平时说话的一句话,由;结束 int a = 32;
- 代码块:一对大括号括起来就是一个代码块
java是区分大小写的
- 关键字和标识符都是区分大小写的
- 类名必须与文件名一致,包括大小写要求
- 使用变量时,名字必须和声明变量时的标识符大小写一致
- 方法名,也是区分大小写的
- 类型也区分大小写,int是类型,而Int不是
- System.out.println 可以被识别,而SYSTEM.OUT.PRINT不可以
字面值
- 整数的字面值类型默认是int
- 超过int的范围,需要使用取值范围更大的类型
3.java中的基本数据类型
认识二进制
- 十进制:每一位可以是0~9这十个值,到10进位。一百用十进制表示是100,十是10
- 二进制:每一位可以是0和1这两个值,到2进位,100用二进制表示是1100100,十就是1010
- 十六进制:每位可以十0~f这16个值,到16进位,一百用16进制表示十64,十就是A
- bit和byte
- 一个二进制的位叫做bit。网络带宽中的单位都是bit
- 八个二进制的位组成一个byte。硬盘等存储的单位,都是byte
- byte是计算机中衡量存储的单位,
数字的基本数据类型
- 整数类型
- byte占用一个byte,值域为-128~127
- short占用2个byte,值域是-32768~32767
- int占用4个byte,值域是-2147483648~2147483647。java中整数缺省是int类型
- long占用8个byte,值域是-9223372036854774808~9223372036854774807
- 浮点数类型
- float占用4分byte,有精度,值域复杂
- double的精度是float的两倍,占用8个byte。java中浮点数缺省是double类型
- 符号位
- 布尔和字符数据类型
- boolean占用一个byte,值域是true,false
- char 占用2个byte,值域是所有字符
4.java中的运算符
- 运算符对一个或多个值进行计算,并得出运算结果
- 运算符的运算结果类型有的是固定的,有时候根据被计算的值变换,两个int相加,结果就是int
- 混淆点,除了赋值运算以外,运算符本身不会改变变量的值
%取模运算符
- 用来计算余数
- 负数也可以被取模
- 负数也可以取模
- 小数也可以取模
整数的除法运算
int 除以 int 结果还是int ,不会变成浮点数
比较运算符和布尔运算符
比较运算符:>,>=,<,<= ,!=, ==
布尔运算符
- !叫做非运算符,not运算符,!true是false ,!false是true
- &叫做且运算符,and运算符 true&true是ture,true & false 是false
- &&叫做且且运算符,运算结果和&一样
- | 叫做或运算符 or 运算符 true | false 是true ,false | false 是false ,true | true 是true
- ||叫做或或运算符,运算结果和| 一样
小括号运算符
小括号中可以包括任何运算符,决定运算的顺序
运算符优先级
- ()
- !
- *,/,%
- +,-
- “>” “>=” “<” “<=”
- ==
- !=
- & && | ||
- =
理解运算符,灵活记忆优先级
- 为什么=优先级最低
- 需要等待右面的值算出来
- 为什么布尔运算符的优先级低于比较运算符
- bool值由比较运算符得到
- 为什么比较运算符的优先级比算术运算符低
- 比较的数可能是算数出来的
5.java中的位运算符
字面值的八进制和十六进制
以0开头的整数为8进制
- 05就是十进制的5
- 011就是十进制的9
以0x开头的整数为十六进制
- 0xF就是十进制的15
- 0x11就是十进制的17
按位运算符
- 按位并:&
- 按位或:|
- 按位异或:^
- 按位取反:~
位移运算符
- “>>”:符号位不动,其余位右移符号位后面补零吗,又称带符号右移
- “>>>”:符号位一起右移,左边补零,又称无符号 右移
- “<<”:左移,右边补0。左移没有带符号位有一说,因为符号位在最左面
注意:按位和以为,并不会改本其本身的值
位运算符的用处
按位运算符
- 掩码(MASK)
位移运算符
- 高效除2
6.基本数据类型的更多语法点
变量要先赋值后使用
计算并赋值运算符
- 作用是为了让代码更简洁,比如a = a + 10,可以简化为 a += 10;
- +=
- -=
- /=
- *=
- %=
- &=
- |=
- ^=
- “<<=”
- “>>=”
- “>>>=”
数据类型的自动转换
自动类型转化
- 不会出现问题的类型转换,编程语言可以做自动类型转换,比如低精度到高精度
- 自动类型转换可以发生在算数运算,也可以发生在赋值
数值精度顺序double > float > long > int >short > byte
char可以转换为int
- 虽然同样是两个byte,但是因为char是无符号数,值域超过了short可以表示的范围
- 所以不可以转为short
强制类型转换
- 可能出现问题的的类型转换,需要使用强制类型转换,比如高精度数值向低精度数值转换
- 强制类型准换也是操作符
- 语法是使用小括号括起来的目标类型放在被转换的值的前面
- 强制转换会造成数据精度丢失
数值溢出
- 数值计算一旦溢出,结果将失去意义
- 要对能够处理的值有大概的估计
7.字符集和编码
什么是字符集charset
- 字符集就是字符的集合,一般会包含一种语言的字符。比如gbk包含所有汉字字符的字符集
- ascll包含英文字符的字符集
- 字符就是java中的char, character的缩写
什么是编码
- char代表一个字符,char本质也是数字看。将数字映射到字符就叫编码
- 将一个字符集映射到数字,,就是给这个字符集编码。编码是有标准的
- 所有计算机按照同一个编码标准执行
- 有时候编码和字符集会混用
编码和字符集介绍
常用的字符集
- ASCII
- Unicode 包含世界上所有常用字符 ,UTF-8, UTF-16
- Unicode GBK等常用的字符集,都会兼容ASCII
java中的字符集
- java中使用UTF-16编码的Unicode
- UTF-16用16个bit,即两个byte,这也是char占用两个bytr的原因,当把char转成数字的时候,需要用int
如何输出特殊字符
- 可以ascii码+char
转义符语法和常用的转义符
- \n.换行符
- "双引号
- \t制表符
- \uXXXX。unicode编码对应的字符
字符串的 “加法”
- 将变量穿插在字符串中输出
- 字符串可以和任何类型进行加法运算,会将这个值拼接到字符串上
- 字符串也可以使用+= 操作符来拼接
- 字符串的加法运算符号加法运算本身的优先级
- 字符串不是java中的基本数据类型
- String不是java中的保留字
- String的加法不会改变原来String变量的值,值的改变需要赋值语句
8.操作符和数据类型总结
- 自增自减操作符是可以直接改变变量值的操作符
- 前加加和前减减
- 后加加和后减减
- 其实是一个+1操作和一个赋值操作的缩写
- ++a先加后使用
- a++先使用后加
打印26个连续字符
- 自动类型转换:char到int
- 强制类型转换:int到char
- 字符和数字的对应关系,字符集和编码
- 字符串的加法:任何数据和字符串都可以相加
- 自增操作符
找到可以被整除的数
- 取模运算:整数的取模运算
- 布尔运算:==操作符
- 自增运算
9.程序执行流程之if-else语句
顺序执行
- 代码块的执行是顺序执行
if_else语法
1 | if (boolean) { |
- if-else中只有一个语句块被执行
- if和else都是java中的关键字
- if语法
- 把if-else看成一个表达式,整体还是顺序执行
if-else的嵌套
- if-else就是一个语句,可以是另一个语句的一部分,也可以是if-else的一部分
- 求a ,b,c中最大数
if-else的简化
- 如果if或者else的语句块只有一个语句,可以省略大括号
10.程序循环之for语句
- 让程序在满足条件时,重复执行某个代码块。for是关键字
1 | for (初始化语句;循环条件表达式;循环体后语句) |
- 初始化语句在for循环开始前执行一次,以后不再执行;循环条件表达式在每次循环体执行前执行如果为
- true则执行循环体,否则循环结束;循环体后语句会在每次循环执行后执行
Break语句
- break可以结束循环
continue语句
- 结束本次循环,开始下一次循环体的执行=