进制
二进制:由0、1组成,逢二进一,以0b开头,
八进制:由0~7组成,逢八进一,以0开头
十进制:由0~9组成,逢十进一,默认是十进制
十六进制:由0-9,A-F组成,逢十六进一,以0X开头
案例:输出不同进制表现10的数据
二进制:0b10
八进制:010
十进制:10
十六进制:0x10
任意进制到十进制的转换
规则:系数*基数^权数次幂相加
1 | 二进制转换为十进制:0b101----> 1*2^0+0*2^1+1*2^2=5 |
其他进制转换到十进制以此类推
十进制到任意进制的转换
规则:除基取余 直到商为0 余数反转
十进制转换为二进制:
5/2商2余1
2/2商1余0
1/2商0余1
余数反转(自下而上)的二进制为:0b101
原码 反码 补码
原码:即二进制定点表示法
反码:正数的反码与其原码相同;负数的反码是除符号位外对其逐位取反
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1
案例:
原码:1001011
反码:1110100(除符号位外对位取反)
补码:1110101(反码加1)
变量
什么是变量
- 在程序执行的过程中,在某个范围内其值可以发生改变的量,定义一个变量,其实就是开辟了一个内存空间
- 变量本质上是内存中的一块空间,这块空间“有数据类型”、“有名字”、“有字面值”
- 变量包括:数据类型 名字 字面值;
- 变量是内存中存储数据的最基本的单元
数据类型的作用:指导数据在内存中开辟多大的空间
- 不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间
- 数据类型是指导程序在运行阶段应该分配多大的内存空间
- 变量要求:变量中存储的具体的“数据”必须和变量的“数据类型”一致
定义格式
- 数据类型 变量名 = 变量值
变量声明后怎么赋值
变量名 = 字面值;
=等号是一个运算符,叫做赋值运算符,赋值运算符先运算等号右边的表达式,表达式执行结束后的结果赋值给左边的变量。
声明和赋值可以放到一起完成
1 | int i = 10; |
变量赋值之后可以重新赋值,变量的值可变化
1 | int i = 10; |
有了变量的概念之后,内存空间得到了重复的使用
通常访问一个变量包括两种访问形式
- 第一种:读取变量中保存的具体数据 get/获取
- 第二种:修改变量中保存的具体数据 set/设置
1 | i = 20; //set |
变量在一行上可以声明多个
1 | int a,b,c |
变量必须先声明,再赋值,才能访问
1 | public class Varible { |
*变量的分类
根据变量声明的位置来分类:
局部变量
在方法体当中声明的变量叫做局部变量
成员变量
在方法体外(类体内)声明的变量叫成员变量
- 在不同作用域中,变量名可以相同,就近原则
数据类型
不同数据数据类型的数据占用空间大小不同。
数据类型作用是指导JVM在运行程序时给数据分配多大的内存空间。
Java中数据类型的分类:
基本数据类型
引用数据类型
基本数据类型
整数型
1 | 类型 字节数 范围 |
浮点型
1 | 类型 字节数 范围 |
字符型
1 | 类型 字节数 范围 |
换行符 \n
制表符 \t
布尔型
1 | 类型 字节数 |
整数默认是int类型的 , 浮点数默认是 double类型的
引用数据类型
如数组,接口,类等
注意:
未初始化的变量不能使用
同一作用域内不能有两个同名变量
同一行可定义多个变量,但不建议
java数据类型的自动类型提升与强制转换
自动类型提升
byte short char 在参与数学运算时,会自动提升为int类型,如果还有long ,float double 参与运算则会相应的提升为 long float double ,布尔类型不参与数学运算,byte short char 之间不发生转换
1 | byte a=10; |
强制类型转换
强制将一个数据,转换成我们要的数据类型,强制类型转换,有可能会发生精度损失的问题
格式:目标数据类型 变量名=(目标数据类型)(被转换的数据);
1 | byte a = 1; |
案例
1 | byte a=10; |
字符和字符串参与运算
ASCII码表中: ‘a’97 ‘A’ 65 ‘0’ 48
1 | char ch = 'a'; |
当+号运算两端只要任意一端是一个字符串,那么加号就起连接符的作用,就会将两端的内容拼接起来,形成一个新的字符串
1 | System.out.println("Hello World!"+100); //"Hello World!100" |
运算符
什么是运算符:对常量和变量进行操作的符号称为运算符
运算符的分类:
1
2
3
4
5
6算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
三目运算符注意事项:
a:整数相除只能得到整数。如果想得到小数,请使用浮点数 b:/获取的是除法操作的商,%获取的是除法操作的余数 %运算结果的符号,取决于参与运算是左边的符号。
算数运算符
- 算数运算符有哪些:+ , - , * , / , % , ++ , –
/:整数相除只能得到整数,要得到小数需使用服浮点数
++:自加,对原有的数据进行+1
–:自减,对原有的数据进行-1
++,–运算符单独使用:放在操作数的前面和后面效果一样
++,–参与运算时使用:放在操作数的前面,先自增或者自减,然后再参与运算
放在操作数的后面,先参与运算,再自增或者自减
案例
1 | int a = 3; |
赋值运算符
赋值运算符有哪些:=, +=,-=,*=,/=,%=
案例:
1 | byte b =3; |
比较运算符
关系运算符有哪些:== ,!= , < , > , <= , >=
关系运算符运算结果是booean型
逻辑运算符
逻辑运算符有哪些:&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
逻辑运算符运算结果是booean型
&(并且) , |(或者) 和 &&(短路与) ,||(短路或) 在运算结果上没有区别,区别在运算效率上:&,运算符两端都会计算,而&&,||只要左端能得出计算结果,则不会执行右端
案例:
1 | int a = 1; |
三元运算符
语法:布尔表达式?结果1:结果2
案例:求两个数最大值
1 | int a = 1; |
位运算符
位运算符有哪些:
&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反 0变1 1变0
<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
1 | int flag = 1&2; //0 |