Java笔记(数据类型,变量,运算符)

1.数据类型分为:

​ (1)基本数据类型
​ 数值型
​ 整数
​ byte 字节 8bit -128~127
​ short 短整型 16bit -32768~32767
​ int 整形 32bit -2147483648~2147483647
​ long 长整型 64bit
​ 小数(浮点数)
​ 字符型
​ char 16bit 无符号位
​ 布尔型
​ boolean 8bit true/false
​ (2)引用数据类型
​ 类,数组,接口

2.进制

​ 二进制(0b开头)八进制(以0开头),十进制,十六进制(以0x开头)
​ 进制转换:十–>八(直接除,将余数按倒序排列)
​ 八–>十(位数乘对应的八的次方最后相加)

3.类型转换

​ 高精度到低精度需要强制类型转换,即(转换类型)数值
​ 但是高精度转换为低精度有可能会损失精度(高位截取),即只保留低位数据,截掉高位数据
​ 例 0000 0001 1010
​ --> 1010
​ 丢失高位数据
​ 低精度到高精度是自动类型转换,不需要强转
​ byte -->short --int -->long -->float -->double
​ char–>
​ char没有负数,short有负数,两者范围大小相同但是区间不同,所以两者之间无法自动转换
​ 则char也无法转换为byte

4.混合运算

​ 运算结果一定等于高精度数据类型。例:int*double=double
​ 注:当byte,short,char,int四种类型中,任意一种或多种进行混合运算时,结果均为int类型
​ 因为int是整形,所以5/2=2,并不是2.5,只保留结果整数部分
​ java中整数默认为int类型,小数默认为double类型

5.转义符 \

​ 使用方法,放到想转义的字符之前,例\¥,¥就被转义了

6.字面量:整数int(6)或小数double(6.6)

​ 在整个生命周期中不能修改,且不能复用
System.out.print(6)
常量:被final修饰过的变量
final int a=6;
​ 在整个生命周期中不能修改,但可以复用
变量:可以复用,可以修改

int a=6;
System.out.print(a);
a=7;
System.out.print(a);

7.变量

7.1.全局变量,方法

java中没有全局变量,因为java已经模块化封装了,已经屏蔽了全局的概念,但是可以将变量设置成public,
这样在其他类中也可以通过 类名.变量名 的方式来访问public变量
java中也没有函数,只有方法,因为java已经模块化封装了,方法只属于某个类或某个对象,
外部需要通过 类名.方法名 的方式来进行二次调用

7.2.变量定义

​ 数据类型 变量名=值;
​ 数据类型 变量名;即只划分内存空间不赋值

7.3.变量分类

​ 局部变量:在方法中创建的变量是局部变量
​ 成员变量:在类中(方法外)创建的变量
​ 静态变量:在类中(方法外)用static修饰的变量

public class Var{
	//成员变量
	int a=11//静态变量
	static int b=22public static void main(String[] args){
		//局部变量
		int c=33}
}

7.4.变量调用

​ 局部变量:在方法中,直接写变量名调用即可,方法外无法使用其他方法中的局部变量
​ 静态变量:类名.静态变量名 进行调用,同类中,类名可以省略
​ 成员变量:对象.成员变量名

7.5.默认值

​ 静态变量和成员变量是有默认值的,
​ 整数:0 ,小数:0.0 ,字符:\u0000 ,布尔:false ,引用类型:null
​ 局部变量没有默认值,不赋值不能使用

7.6.优先级:局部变量可以和静态变量/成员变量重名

​ 若局部变量和静态变量重名,则默认调用局部变量
​ 如果想调用静态变量,则需要加上类名前缀(类名.静态变量名)

7.7.作用域

​ 作用域即作用范围,例如在一个大括号内,作用范围就是这个大括号内的所有地方

8.运算符

8.1.操作符

​ 算术运算符(+,-,*,/,%,++,–)
​ ++:只要出现++则该数或变量本身必定加一
​ int a=10
​ a++ + ++ a=
​ 10(本身加一)+(11加一)12=22
​ 注:a++与a=a+1并不相同
​ a++会自动进行强制类型转换,而a=a+1需要手动进行强制类型转换

8.2.关系运算符(>,>=,<,<=,==,!=)

​ 返回的结果都是布尔型true/false

8.3.位运算符

位运算,得到的是boolean类型的值
&:位与,两边都是真,结果才是真
| :位或,一边为真,则结果为真
!:位非,去反,真变假,假变真
^ : 位异或,相同为假,不同为真
&&:短路与,两边都为真,则结果为真 ,如果第一个条件为假,则不在判断第二个条件,直接返回false
| | :短路或,如果第一个条件为真,则不在判断第二个条件,直接返回true
&与运算也可以两边都是数字,则进行与运算,结果不会大于两个数中的最小数

把数字转换为二进制,进行每位比较,若都为1,则取1,否则取0
1010
&1111
1010

^ : 也可以两边都是数字.则进行异或运算
把数字转换为二进制,进行每位比较,相同为0,不同为1
1010
^1111
0101
0和任何数进行异或运算, 结果都是他自己 , 例0^x=x
相同的数字进行异或运算两次,结果都是0, 例x^x = 0

<< : 左移运算,左移一次,等于该数乘2 , 只补0,即除符号位,删除最左边一位,在最右边补0
1000 0010(原码)
反码:1111 1101
移位:1111 1000
补码:1111 0111
反码:1000 1000(移位后的原码)

“>>” :右移运算,右移一次,等于该数除2 , 正数补0,负数补1,除符号位,删除最右边以为,在最左边补0 (负数补1)
">>"过程与左移相似,只有补0 和补1 的区别

“>>>” : 右移运算,同上, 但是 只补0 不补1,而且不考虑符号位

9.原码:正数是他的二进制数,负数则是将绝对值对应的最左边变为1

​ 第一位表示符号(正是0,负是1),其余位表示数值
​ +1= 原:[ 0000 0001 ]
​ -1= 原:[ 1000 0001 ]
​ 反码:正数和原码相同,负数在源码的基础上各位取反但符号不变
​ +1= 原: [ 0000 0001 ] = 反:[ 0000 0001 ]
​ -1 = 原:[ 1000 0001 ] = 反:[ 1111 1110 ]
​ 补码:正数和源码相同,负数在源码基础上符号位不变,其余各位取反加一

你可能感兴趣的:(java,笔记)