基本数据类型
首先先说下字节:字节(byte)是计算机信息技术用于计量存储容量的一种计量单位
通常情况下一字节由8个二进制位表示 0000 0000; 一个字节的取值范围为-128~127.
大家有兴趣的可以了解下为什么是-128~127.
一个Byte由八个位组成,如0000 0000,其中后七位表示数值,最前面的一位是符号位(0为正,1为负).这样+1就是0 000 0001, -1就是1000 0001.那么最大的正数就是0111 1111,即2^0+2^1+.......2^6=127;同理,最小的负数为1111 1111,即-127;而之所以说取值范围是-128~127,是因为0会出现一个+0和一个-0.这时,将-0规定为-128,这样就与计算机的补码(程序都是按补码运行的)完美的结合在一起.
1.整数型
short 短整型 2个字节
int 整型 4个字节
long 长整型 8个字节
2.小数型(浮点型)
float 4个字节
double 8个字节(double)
3.字符型
字符串型
下面我们来举个例子
public class Demo { public static void main(String[] args) { //常量 在程序中,不能修改的量就是常量 //声明一个变量---存储数据 //数据类型+变量名 = 初值; int a = 10;//定义了一个整型变量,初值为10 a = 15; byte b = 10; short s = 10; long m = 10; /* *double是存储小数的 *但是,现在赋值的是一个整数 *这时系统会进行 隐式转换 *把小的类型 帮你 转换 成大的类型 */ double d = 10; System.out.println(d);//10.0 //强制类型转换 会丢失数据精度 //声明一个小数 系统默认 使用的是double类型 int number = (int)3.13; System.out.println(number); //声明float类型小数,需要使用标识符f标识 float f = 10.0f; System.out.println(f); /* * 特殊类型 字符类型 * 特点:字符类型可以和整形相互转换 * 声明字符型 使用 单引号 */ char ch = 'a'; System.out.println(ch); //强转完 打印该字符在 AscII表中对应的值 System.out.println((int)ch); char ch1 = 97; System.out.println(ch1); //字符串类型 //字符串中+号 相当于连接两个字符串(拼接) String str1 = "haha"; String str2 = "wawa"; System.out.println(str1 + str2); int num1 = 10; System.out.println("num1 = " + num1); int num2 = 15; System.out.println(num1 + num2); //数字和字符串 使用+连接的时候 //相当于直接做字符串的拼接 //和字符串相加 一定会得字符串 System.out.println(str1 + num1 +num2); } }
运算符
1.算术运算符 + - * / %(区域运算符) ++ --
2.关系运算符 > = < >= <= == !=
使用关系运算符 是用来判断的,并且判断结束后会有一个结果 布尔值true false
逻辑运算符 (用来判断 返回一个布尔值)
&& 逻辑与 (条件1)&&(条件2) 一假则假
|| 逻辑或 (条件1)||(条件2) 一真则真 ---逻辑运算需注意其短路现象
! 逻辑非 非真即假
public class Demo { public static void main(String[] args) { //取模运算(用的最多 是对2取余) //判断是不是偶数 int n1 = 10 % 2; System.out.println("n1 = " + n1); // 除法 int n2 = 10 / 3; System.out.println("n2 = " + n2); //ArithmeticException算术异常 // int n22 = 10 / 0; // System.out.println(n22); //自增运算(++) 和 自减运算(--) //++在前,先自增再参与运算 //++在后,先参与运算再自增 int n3 = 10; n3++; System.out.println("n3 = " + n3); int n4 = 10; int n5 = n4 + ++n4;// 10 + 11 System.out.println("n4 = " + n4);//11 System.out.println("n5 = " + n5);//21 //声明一个布尔类型变量 //只有两个值 true false //声明状态 和 判断时候用 boolean b = true; System.out.println(b); int num1 = 10; int num2 = 10; boolean result1 = num1 == num2; System.out.println(result1); //判断两个字符串是否相等 String str1 = "wanglong"; String str2 = "pengqian"; str1.equals(str2); boolean reslut2 = str1.equals(str2); System.out.println(reslut2); int num3 = 10; int num4 = 15; int num5 = 12; // 逻辑与的短路现象 // 一假则假 如果条件1已经不成立了 // 那么系统不会执行后面的语句 boolean reslut3 = (num3 > num4) && (++num3 > num5); System.out.println("num3 = " + num3);//10 boolean reslut4 = (num3 < num4) && (++num3 > num5); System.out.println(reslut3); System.out.println("num3 = " + num3);//11 //逻辑或短路 //一真则真 如果条1为真,那么后面就不会执行 boolean reslut5 = (num3 < num4) || (num3++ > num5); System.out.println("reslut5 = " + reslut5); System.out.println("num3 = " + num3);//11 } }
分支运算---if switch
if---三种写法
if(判断条件){
执行的语句
}
if(判断条件){
执行语句1(条件成立时)
}else{
执行语句2(条件不成立时)
}
if(条件1){
执行语句1(条件1成立时)
}else if(条件2){
执行语句2(条件2成立时)
}else{
执行语句3
}
switch
switch (key---被匹配的值) {
case value--匹配的值:
执行语句1
break;
case 匹配的值2:
执行语句2
break;
可以有很多个case
default:
如果前面都没有匹配上
就执行default
break;
}
理论上来说,能使用if的,就一定能使用switch语句
什么时候使用if,什么时候使用switch
如果判断时候 条件是个范围用if
如果判断时候 条件是几个值,使用switch相对简单一点
三目运算
(判断条件)?值1 : 值2;
判断条件成立 返回值1 反之 返回值2
int num1 = 10;
int num2 = 15;
int max = 0;
max = (num1 > num2) ? num1 : num2;//15