数据类型:Java是一种强类型编程语言
生命周期:有效范围。Java提供了垃圾回收机制
Java中的数据类型可以分为两大类型:基本类型【原生】和引用类型【复杂】
基本类型4型8种
整型:byte 1、short 2、int 4、long 8
- Java采用补码的方式存储数据 。
- 4种不同的表示方法:十进制、0八进制、0x十六进制、0b二进制
- 在使用字面量,Java中的整数默认类型就是int,如果想表示long则在数值末尾添加l/L,一般建议使用L
浮点数:float 4、double 8
-
在Java种浮点数无法精确存放,除非使用Java提供的类BigDecimal
不允许使用等值==判断,应该使用Math.abs(a-b)<1e-6
-
字面量的表示方式:十进制123.0、科学计数法1.23e2,注意e后面只能是整数
数值末尾使用f/F表示float,使用D/d表示double
字符类型 char char c=‘中’;注意是单引号,不是双引号
- Java中字符采用的是Unicode编码字符集,2B,对应的整数为0-65535
- 字符类型的变量可以当作整数使用
- ‘0’<‘A’<‘a’
- Java中提供了转意字符,以反斜杠开头
ddd 1-3位的8进制数对应的字符
uxxxx 1-4位的16进制数对应的字符
’表示单引号
”表示双引号
表示反斜杠字符
布尔类型 boolean
- 只有两个数值:true表示真,false表示假
- 在Java中整型数据和boolean值之间没有转换关系
//整型数的进制转换
int kk=123;
//将十进制转化为8进制
System.out.println("0"+Integer.toOctalString(kk));
//将十进制转换为16进制
System.out.println("0x"+Integer.toHexString(kk));
//将十进制转换为2进制
System.out.println("0b"+Integer.toBinaryString(kk));
常见的数学计算`
double dd = 144.d; System.out.println(Math.sqrt(dd));//开平方 int k1= 12; System.out.println(Math.pow(k1,2));//计算k1的2次方 System.out.println(Math.pow(k1,0.5));//对k1开方 k1=-123; System.out.println(Math.abs(k1));//绝对值 System.out.println(Math.max(k1, dd));//求两数的较大值 System.out.println(Math.min(k1, dd));//求两数的较小值 dd = 3.45; System.out.println(Math.ceil(dd));//天花板 4 System.out.println(Math.floor(dd));//地板 3 dd = -3.45; System.out.println(Math.ceil(dd)); //-3 System.out.println(Math.floor(dd)); //-4 //四舍五入,注意考核中的坑在于对负数的处理 dd= -3.45; System.out.println(Math.round(dd));//-3 dd=-3.56; System.out.println(Math.round(dd));//-4 //取随机数 System.out.println(Math.random());
除了简单计算之外,还有指数,对数,三角和反三角函数等方法的封装。
字符类型的基本使用
char c='a';
System.out.println(c);//a
c++;//给c+1;计算结果等价于c=c+1,但这里涉及数据类型转换的问题,所以c=c+1会语法报错
System.out.println(c);//b
//将字符类型转换为整数
System.out.println((int)c);//98
c='中';
System.out.println(c+"===="+(int)c);//中====20013
//转义字符
System.out.println('123');// s
int kk=0123;//0开头表示8进制
System.out.println((char)kk);//s
System.out.println('u9110');
kk=0x9110;
System.out.println((char)kk);
char cc='\';
System.out.println(cc);//
System.out.println((int)cc);// 92
基本数据类型转换
小转大自动转,大转小需强转 窄化操作
//小转大 byte b1 = 123;//自动识别123位byte类型,但是如果超出范围则自动报错 long k = b1; double k2 =k1; //大转小 double d1=123.456; long k1 = d1;//语法错误 long k2 = (long)d1;
强制类型转换的语法(目标类型)变量
注意:boolean类型和数值类型之间没有任何关系,所以进行强制类型转换会包语法错误。
浮点数的特殊处理
针对浮点数系统默认的是double型,但是变量f1声明为float,所以这里需要进行数据类型转换或进行特殊声明。
double d1 = 123.456; //long k1 = d1; long k1 = (long)d1;//强制类型转换 System.out.println(k1);//使用强制类型转换可能会导致精度缺失 //针对浮点数的特殊处理 //float f1=123.456;语法错误,type mismatch;cannot conver from double to float float f1 = 123.456f; float f2 = (float)123.456;复合数据类型
复合数据类型包括:类class、接口interface、数组
特殊值null,在运行时并没有对应的类型,但是它可以被转换为任何复杂类型,表示没有存储数据,但是不能赋值给简单类型
复合类型的默认值就是null空指针
Object bb;//定义变量bb为复合数据类型object,object类是系统预定义 //System.out.println(bb);这里报错是因为要去临时变量必须先定义后使用, //必须先赋初值后使用 bb = null; System.out.println(bb);常量
常量就是指在程序执行的期间其值不能发生变化的数据
final double PI = 3.1415; PI=PI+1;//这里语法报错是因为PI是常量,不允许修改表达式
表达式就是运算符、操作数以及方法的调用序列,用来说明某个计算过程并返回计算结果。
基本运算符可以分为:算术运算符、关系运算符、位运算符、条件运算符
- ·算术运算符+ - * / % ++ –
- 关系运算符> >= < <= ==等值 !=不等于
- 逻辑运算符 &&与运算,表示并且的关系,
||或运算,表示或者的关系,
!非运算,表示不是,
重点在于计算过程中支持短路操作 - 位运算 &与 |或 ^异或 ~按位取反
<<左移位 >>右移位 >>>,基本不做要求,位运算符不支持短路操作 - 赋值运算符 = += -= /= %=
- 三目运算符(表达式1?表达式2:表达式3)
问题:将一个任意正整数进行反转,如果数值越界则返回-1
//Integer.MAX_VALUE最大整数
int k = 2000000999;
long res = 0;
while(k>0)
{
int p=k%10;
k=k/10;
res=res*10+p;
if(res>Integer.MAX_VALUE){
res=-1;
break;
}
}
System.out.println(res);
如果这段代码需要进行多个地方使用,则需要一个方法,其中包含处理逻辑,其他地方使用时只需要通过名称就可以进行调用
public static void main(String[] args) {
int k = 2000000999;
System.out.println(reverse(k));}
public static int reverse(int x){
long res = 0;
while(x>0)
{
int p=x%10;
x=x/10;
res=res*10+p;
if(res>Integer.MAX_VALUE){
res=-1;
break;
}
}
return (int)res;//因为res声明的类型为long类型,但是返回类型为int,所以需要进行强制类型转换
}
关系运算符
逻辑运算符
赋值运算符


