基本数据类型:
1 整数
2 小数
3 布尔
4 字符
引用数据类型:
1 字符串
2 数组
3 对像
1整数 类型 字节 取值
byte 1 -128-127
short 2 -32768-32767
int 4
long 8
float 4
double 8
2 布尔 Boolean 1 ture/flase
3 字符 char 2
类型转换:
有自动转换和强制转换两种
根据取值范围定义其类型大小
//类型自动转化1 小类型转大类型
package demo;
public class TestAutConvert{
public static void main(String[] args){
short s = 20;
int i = s;//自动转换
}
}
//类型强制转化2 大类型转小类型
package demo;
public class TestAutConvert{
public static void main(String[] args){
short s=132;
byte b = (byte)s;//强制转换
}
}
我们发现以上例子都是在目标类型的范围里,
如果我们要int 10000转为 byte (最大值为127)比如下面
int i=100;byte b = (byte)i; b=100;
int i = 10000; byte b = (byte)i; b=16;//为什么会是16?需要思考一下
int i = 2.5; byte b = (byte)i; b=2;//精度缺失
char c=96; int i=c; i=96;
/*byte我们知道占一个字节,也就是8个字符那么1000转换为二进制为0010 0111 0001 0000 我们去后8位
0001 0000
第一位:符号位 0代表正数 1代表负数
如果第一位是1 代表负数
除符号位之外剩余数字二转十
0001 0000 第一位为0,为正数转化为10进制为16
赋值运算符
+= 为求和赋值
-= 为求差后赋值
*= 为求积后赋值
/= 为求商后赋值
%= 求余数后赋值
控制台输入导包和规则
//导入包一般在Java中在先导入程序要的包
//在向控制台输入要进行导入包后才能操作
import java.util.Scanner;
//在主程序写上
Scanner input = new Scanner(System.in).nextInt;
Scanner input = new Scanner(System.in); //两种方式一样
System.out.println("请输入猜测的数");
int userNum = input.nextInt();//获取整数
.nextdouble();//获取小数
.next();//获取字符串
.next().charAt(0);//获得单个字符
input可以换成任意字符 在后面要与之对应。
这样就可以在控制台上输入
但如果输入不匹配的数据类型如在.nextint();输入了小数或字符串
就会报错 产生Java.util.InputMismatchException
运算时自动类型提升:
当作算数运算时
a*b=c;
a为double比其它数据类型都大,那么结果c也是double类型
如果a b 中最大为int 那么结果c是int类型
double> float>long>int>short>byte>
注意:任何数据类型与String相加,实为拼接 结果自动提升为String
c=a*b
/*a,b做算术运算时,结果c会自动提升较大的数据类型
一般我们会先定义*/
int c= a*b;
/*如果a,b,有比int大的类型会报错,a,b有为double,long,float类型是不可以的
但如果ab类型比int小,会自动提升为int类型
需要特别注意再操作数中没有int,a,b为short或byte计算结果仍为int,特别注意
因此我们一般定义为int或double
任何类型于String相加(+)时,实为拼接,自动提升为String
int i=5;
String s=i+"ss";