数据类型和运算符
一.数据类型:
1.整数型
* 整数: 内存 取值范围 注意点
* byte 1字节8位 -128---127
* short 2字节16位 -32768---32767
* int 4字节32位 21亿多正负 java一个整数数字默认为int类型
* long 8字节64位 数据后加L/l 标识
* 字面值数据,程序中使用数据,有时会重复多次使用。或者 有时数据 来自于 用户的输入,使用 变量/常量 的 存放整个数据
* 变量和常量:本质上是一个数据的容器。
* 变量:存放的数据 可以在程序运行中 发生改变! 常量:里的数据 不能变 只能赋值一次!
* 变量和常量 也要 指定数据类型!
* 由小到大:byte<short<int<long <float<double;
展示以下代码:
//声明int类型的变量 名字num
int num;
//初始化(第一次赋值)
num = 100;
System.out.println(num);
//声明long型变量 名为number , 赋值1000l;
long number = 123l;
//定义long需要在后面数字后加字母'l'。
System.out.println(number);
//同时声明 相同类型的多个变量
short b1 = 1, b2 = 2;
2.浮点数
* 浮点数: 内存 精度 注意点:
* float 4.32 7位左右 数据后必须加F/f
* double 8.84 15位左右 数据后可以加D/d ,java 中的小数 默认是double类型;
* 布尔:
* boolean 只有两种值:false 与 true;
展示以下代码:
float fnum1 = 10.98f;
final double PI =3.1415926;
//final 为定义常量;
float fnum2 = 1.123456789123456789f;// 定义float单浮点型变量时,小数后面必须加一个f
double dnum1 = 1.123456789123456789;
boolean bool1 = 10<9;
//boolean 布尔类型只有true false两种
System.out.println(fnum2);
System.out.println(dnum1);
System.out.println(bool1);
3.字符类型
* 字符类型 char : 2字节16位 表示 单个字符 使用'' 又可以赋值为一个 编码值0-65535 char型也算个整数型!
* 字符串 String 表示 0-N 个字符组合在一起的序列 使用""
* 计算计使用二进制的10组合来存放任何数据 包括 a-z 0-9 各种符号 汉字 .....
* 编码:使用什么样的10的二进制组合 来 存放 哪个字符 , 国家和地区 形成 编码集。
* GBK GB18030 GB2312 ASCII(256) iso-8859-1 Unicode(万国码 一开始的256个字符 采用 ASCII)
* 小写a 对应 97 大写A 对应65 0对应48
* Unicode:65536字符 0-65535
* 解码:计算机按照编码集 把 10的二进制组合 显示为哪个字符。
展示以下代码:
char c1='a';
char c2=97;
System.out.println(c1);
System.out.println(c2);
输出结果:
a
a
4.类型大小比较及类型转换
* 由小到大:byte<short<int<long <float<double;
* char < int < long < float < double
* 注意点1: byte short char 在两两运算后 结果被提升为int 型
* 注意点2: 小类型和大类型在一起运算之后 结果是大类型
* 注意点3:char 和 short 互相赋值 都需要强制类型转换
展示以下代码:
int num;
num = 100;
double d=10.0;
d=num; //小给大 自动类型转换
System.out.println(d);
//类型大的 赋给 类型较小的
long number = 123l;
//定义long需要在后面数字后加字母'l'。
byte bb = (byte)number;//大给小 非要赋值 需要强制类型转换(强制转为字节型)
System.out.println(bb);
//注意点1: byte short char 在两两运算后 结果被提升为int 型
short b1 = 1, b2 = 2;
short b3 = (short) (b1+b2);
System.out.println(b3);
//注意点2: 小类型和大类型在一起运算之后 结果是大类型
int a = 100;
double dou=1.234;
int result = (int) (a+dou);
System.out.println(result);
//注意点3:char 和 short 互相赋值 都需要强制类型转换
输出 结果:
100.0
123
3
101
来一个小作业测试下:
打印 “你喜欢”的整型数值:
展示两种方法:
第一种:
char c1= '你',c2='喜',c3='欢';
int a1=c1,a2=c2,a3=c3;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
第二种:
int c4='你',c5='喜',c6 = '欢':
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
二.运算符:
1.算数运算
* 算数运算,比较运算 逻辑运算 赋值 位 三目 ....
* 算数: + - * / % ++ --
展示以下代码:
int a=10;
String str = "78566";
int b = 20;
System.out.println(a+b+str);//+ 表示拼接
System.out.println(a+str+b);
System.out.println(str+a+b);
输出:
3078566
107856620
785661020
小测试:
看一段代码 判断输出结果:
代码如下:
int c=10;
int w=c++;
System.out.println("c="+c);
System.out.println("w="+w);//+ 表示拼接
int ppp=10;
int vvv = ++ppp%3 + ppp++/2;
System.out.println("ppp="+ppp);
System.out.println("vvv="+vvv);
答案:
c=11
w=10
ppp=12
vvv=7
2.比较 条件运算
* 比较 条件运算 , 运算结果是boolean , 一般作为 分支或循环的条件!
* > >= < <= == !=
* 比较两个字符串 之间的字符是不是一样的 使用一个 方法 equals 字符串1.equals(字符串2);且返回值为布尔型;
展示以下代码:
int a = 10, b = 20;
boolean bool1 = a>=b;
boolean bool2 = a==b;
System.out.println(bool1+","+bool2);
//以上一般用于基本数据类型的比较;
//比较两个字符串 之间的字符是不是一样的
String str1 = "abc1";
String str2 = "abc1";
System.out.println(str1.equals(str2));
//也可定义一个布尔型变量接收返回值;
boolean bool3 = str1.equals(str2);
System.out.println(bool3);
输出:
false,false
true
true
3.逻辑运算
*逻辑运算:对boolean值的运算,运算结果也是boolean
* 与: 并且 , & ,串联
* 或: 或者 , | ,并联
* 非:取反 , !
* 异或:两个值不一致则为真, 符号:^
* 短路与 并且 &&
* 短路或 或者 ||
展示以下代码:
//声明boolean类型的变量(数据容器) 初始化(第一次赋值)为true
boolean b1 = true;
boolean b2 = false;
boolean b3 = 10!=10;
System.out.println(b1&b2);
System.out.println(b1|b3);
System.out.println(!b1);
int a = 10;
//&&: 短路与 , 当前面的条件是false,整体结果就已经是false,后面再多的条件也不会执行!
boolean bool = (a++%2!=0) && a++>0;
System.out.println(a);
// ||:短路或,当前面的条件是true,整体结果就已经是true,后面再多的条件也不会执行!
输出结果:
false
true
false
11
做一个小测试:
判断以下代码的输出结果:
int b = 10;
boolean dool = ++b<5 || ++b >10 || ++b > 9;
System.out.println(b);
输出结果:
12