一、Java基本数据类型:
Java有两大类型:内置数据类型(基本)引用数据类型。
基本数据类型分为 整数型 浮点型 字符型 布尔型
整数型 :
byte 字节型 占8位 1字节 有符号 范围 -128到127 默认值 0 声明:byte num=100
short 短整型 占16位 2字节 有符号 范围 -32768到32767 默认值 0 声明:short num=1000
int 整型 占32位 4字节 有符号 范围 -2147483648到2147483647 默认值 0 声明 int num=10000
long 长整型 占64位 8字节 有符号 范围 -9223372036854775808到9223372036854775807 默认值0L 声明 long num=100000L
浮点型 :
float 单精度浮点类型 占32位 4字节 有符号 默认值0.0f 占位分为3部分:符号位 指数位 尾数位
符号位 是最高位 31位,表示正负 0为正 1为负
指数位 8位
尾数位 23位
范围 -2^128到2^128
float num=128.0f
double 双精度浮点类型 占64位 8字节 有符号 默认值0.0d
符号位 1位
指数位 11位
尾数位 52位
范围 -2^1024到-2^1023
double num=128.0d
boolean 布尔型 表示位信息 java规范中没明确指出占几个字节 有四个说法 1/8 字节 1个字节 4个字节 取决于虚拟机
默认值false boolean result = true
char 字符型 因为java采用的是unicode编码(utf-16)格式,所以根据utf-16 占2字节 默认值是null('/uoooo')
char可以存储任何字符。
char='好' char='A' char=0
二、Java 运算符:
算术运算符:
+ 加 - 减 *乘 /除 %取余
++自增 --自减
++和-- 为前缀则先运算再进行表达式 为后缀则运算完表达式再自增或自减
关系运算符:
== 检查二者是否相等 真 true 假 false
!= 检查是否不等 真 true 假 false
> 检查前者是否大于后者 真 true 假 false
< 检查前者是否小于后者 真 true 假 false
>= 检查前者是否大于等于后者 真 true 假 false
<= 检查前者是否小于等于后者 真 true 假 false
位运算符:
可应用于 int long short char byte 按位运算
a = 1100 0011
b = 1010 1100
& 与 如果对应位 都是 1 结果为1 反之为0 a&b = 1000 0000
| 或 如果对应位 都是 0 结果为0 反之为1 a|b = 1110 1111
^ 异或 如果对应位值相等 结果为0 反之为1 a^b = 0111 1111
~ 按位取反 0变为1 1变为0 ~a=0011 1100 ~b=0101 0011
<< 按位左移到指定位置 a<<4 1100 0011 0000
>> 按位右移到指定位置 b>>2 10 1011
>>> 按位右移补零 b>>>2 0010 1011
逻辑运算符:
&& 逻辑与运算符 都为真时为真 true 否则为假 false
|| 逻辑或运算符 都为假时为假 false 否则为真 true
! 逻辑非运算符 反转逻辑状态 true反转为false false反转为true
短路逻辑运算符:
&& 当前边为false时,就会直接返回结果 不会运行下一个表达式
|| 当前边为true时,直接返回结果 不会运行下一个表达式
赋值运算符:
= 左边值赋右边
+= 左边的值 = 左边的值 + 右边的值
-= 左边的值 = 左边的值 - 右边的值
/= 左边的值 = 左边的值 / 右边的值
*= 左边的值 = 左边的值 * 右边的值
%= 左边的值 = 左边的值 % 右边的值
<<= 左边的值 = 左边的值 << 右边的值
>>= 左边的值 = 左边的值 >> 右边的值
&= 左边的值 = 左边的值 & 右边的值
|= 左边的值 = 左边的值 | 右边的值
^= 左边的值 = 左边的值 ^ 右边的值
条件运算符:
也叫三元运算符,该运算符有三个操作数,根据要判断的布尔表达式的值 得出最终哪个值赋给变量
type x = (布尔表达式) ? 第一个运算表达式 :第二个运算表达式
· int a = (1+1==2) ? 2:1 结果 a = 2
char a = (1-10>0)? '对':'错' 结果 a = '错'
instanceof 运算符
instanceof用于检查对象实例是否是一个特定的类类型或接口
example instanceof type
ClassA a = new ClassA();boolean result = a instanceof ClassA result 为 true
数学函数:
在final类Math中,包含了各种各样的数学函数。在编写不同类型的程序时,可能会需要用到的函数也不同。例如求一个数的绝对值可以使用 Math.abs()方法,求一个数值的平方根可以用Math.sqrt()方法
三、变量和常量
与所有程序设计语言一样,java也使用变量来存储值。常量就是值不变的变量。
在java中,变量的类型主要有3种:成员变量、静态变量和局部变量。
1、声明变量
在java中,每个变量都必须有一个类型,在声明变量时,先指定变量的类型,然后是变量名。(变量名对大小写敏感)
int num;
double a;
boolean isCan;
可以在一行中声明多个变量
int a,b,c;
long q=1L,w=2L,e=3L; (不提倡用这种方式,逐一声明变量可提高代码可读性)
变量名声明规则:
由字母、数字、下划线或美元符组成
首字母以字母、下划线或美元符开头,不能以数字开头
不能与关键字、布尔值、"null"相同
2、变量初始化
声明一个变量后必须使用赋值语句对变量进行显示初始化,否则不能直接使用变量;
int num;
if(num == 0)
System.out.println(num)
以上代码java编译器会认为是错误的。
对变量初始化,可以先声明再初始化,或者声明时初始化赋值:
int num;
num = 1;
double a = 1.0;
在java中,变量的声明尽可能地靠近变量第一次使用的地方,是一种良好的程序编写风格。
从java10版本开始,局部变量,可以使用var关键字来声明变量,无须指定类型,Java虚拟机会从变量的初始值推断出它的类型。
var intNum = 1;
var str = "ABC";
一些特殊的初始化变量情况:
使用二元运算符:int num = 2 + 3 * 4;
使用三元运算符:int num = true ? 1 : 2; //num = 1;
在if语句中 :
int num;
if((num=1) == 1)
System.out.println(num)
3、常量
在java中,用final关键字指示常量
final int num = 1;
使用final关键字的变量只能被赋值一次,不能被更改,一般常量名都会使用全大写。
一个常量被声明在类里方法外部,类的所有方法都可以使用,如果这个常量被声明为public,则其他类也可以使用这个常量。
4、枚举类型
有时候,变量的取值只在一个有限的集合内。例如,一款电脑显示器,只有带logo和不带logo的两个款式。针对这种情况,可以自定义枚举类型。
enum Type{ LOGO,NOLOGO} (声明一个枚举类)
也可以声明这种类型的变量:Type logo = Type.LOGO;
Type类型的变量只能存储这个类型声明中给定的某个枚举值,或者是null。