数据类型
Java中数据类型分为基本数据类型和引用数据类型
- 基本数据类型
- 数值型
1. 整数
/*
*整数
- 当给定一个数字没有赋值类型 默认为int型
- byte=8bit -128~127
- short=16bit 短整型
- int=32bit 整型 无赋值类型数字的默认类型
- long=64bit 长整型 该类型的值后面加L/l 建议大写区分l和1
*/
byte b_1=127 ;
short s_1=128 ;
int i_1=3333 ;
long l_1=2147483647L;
System.out.println(l_1);
2. 浮点数
/*
- 浮点数
- float 32bit 单浮点 该小数后需要用F/f来声明类型
- double 64bit 双浮点 无赋值类型,默认小数为double
*/
float f_1=1.2F;
double d_1=1.22;
System.out.println(f_1);
System.out.println(d_1);
- 布尔型
/*
- boolean 只有true/false 占用一个字节
*/
boolean b_1 = false;
boolean b_2 = true;
System.out.println(b_2);
System.out.println(false);
- 字符型
/*
- 字符型
- char 16bit
- 引用数据类型 类 数组 接口
- ASCII码 a 97 A 65 0 48
- char 类型的值在‘’单引号中 只能有一位 空格也算
*/
char c_1 = ' ';
char c_2 = 'a';
char c_3 = '明';
System.out.println(c_3);
-
引用数据类型
引用数据类型分为数组,类,接口。
( 这些之后有专门的篇幅介绍) -
类型转换
分为自动转换和强制转换
自动转换:又叫隐式转换,转换规则是小容量的往大容量的转换,可以直接转换。
// 自动转换
int i=b;
long l=b;
强制转换:又叫显式转换,就是自动转换的反向转换,需要在前面加(转换的类型)。
// 强制转换
byte b1=(byte)i;
short s1=(short)l;
但是注意,char,short,byte不能相互转换,这是规定。但也有一种特殊的形式,类似于:
byte b=20;
short s=b;
因为在计算机种他们的默认结果为int型,直接以int型来计算的
运输符
- 算术运算符
/*
* 算数运算符 +,-,*,/,%, ++ , --
* i++(--)和(--)++i结果无区别
* 但 i=i++和i=++i结果有区别
* 前者先赋值后计算
* 后者先计算再赋值 都是输出等号后的i 但前者输出i,本身却为运算后的i+1 后者直接输出运算后的i+1
* 注意这里在运算变量里面,其他变量的++和--也会影响这个变量(其他变量,++,--的那个)的值
*/
int i=4,a=3;
int b=i++ + ++a + ++i + a++;
// 即,等于 b=4+4+6+4
System.out.println(b);
System.out.println(a);
System.out.println(i);
//结果为b=18 a=5 i=6
- 移位运算符
/*
* >> 右移,考虑符号位,正数补0,负数补1,相当与除以二 除几次就是移几位 不会有小数,取商
* << 左移 不考虑符号位 最大的移动就会变成负数 最小的移动就会变成正数
* >>> 右移 不考虑符号位 正数无影响,负数就会变成正数
*/
int a=4,b=5;
System.out.println(-111111111<<1);
System.out.println(-111111111>>1);
System.out.println(a>>2);
System.out.println(-111111111>>>1);
//结果:
//-222222222
//-55555556
//1
//2091928092
- 关系运算符
/*
* 关系运算符
* <= >= == != 小于等于 大于等于 全等 不等
* 都是进行比较判断的
* 返回值都是Boolean型
*/
int a=1,b=2;
System.out.println(a<=b);
System.out.println(a>=b);
System.out.println(a==b);
System.out.println(a!=b);
- 逻辑运算符
/*
* 位运算符 & | ! ^ ~
* 既是 位与 位或 位非 位异或 按位非
* 按位非 就是数字二进制取相反(0变1,1变0) 然后取反码
* && 且 短路与 和&相似 但当碰到假的时候后面就不执行
* || 或 短路或 和|相似 但当碰到真时后面就不执行了
*/
int a=4,b=5;
System.out.println(a<b&a<b);
System.out.println(a<b|a>b);
System.out.println(!(a<b));
System.out.println(true^false);
System.out.println(~a);
//结果:
//true
//true
//false
//true
//-5
- 赋值运算符
/*
* 赋值运算符
* += 把左边的值加上右边的值 然后赋给左边
* -= 同上 左边减去右边,给左边
* *= 同上
* /= 同上
* %= 同上
*注意强制类型转换这块
*赋值运算符和++ -- 这些都是默认强制类型转换,不需要手动写 但该有的数据超出还是存在
*/
byte b=1;
b=(byte)(b+1);
b++;
++b;
b--;
--b;
b+=1;
b+=300;
System.out.println(b);
- 字符串连接符
/*
* 字符串连接符
* + 即是 算术运算符 也是字符串连接符
* 用“”表示字符串
* 字符串连接符是可以让两个字符串连接为一个字符串
*/
int a=1,b=2;
System.out.println("a+b="+(a+b));
System.out.println("a="+a);
System.out.println(a+"+"+b+"="+(a=b));
- 条件运算符
结构:Boolean?x(true时):y(false时),又叫三目运算符
int a=4,b=5;
System.out.println(a>b? 3:6);
System.out.println(a<b? 3:6);
//结果
//6
//3
优先级
一元>二元(算术>移位>关系>逻辑)>三元(三目)>赋值;
元就是代表未知数个数,一元就是一个未知数,如i++