数据类型:
一、基本数据类型
1.1. 数值型
整数类型(byte、short、int、long)
整数类型 | 位数 | 字节数 | 说明 | 数字空间大小 |
---|---|---|---|---|
byte | 8 | 1 | 在运算时会自动转换升级为int。 | -128~+127 |
short | 16 | 2 | short不能直接和byte进行转换需要先转换成int,运算时会自动升级为int。 | -32768~+32767 |
int | 32 | 4 | 系统默认为int。 | -2^31~+2^31-1 |
long | 64 | 8 | 特殊声明需要在数字后加L否则会报错。 | -2^63~+2^63-1 |
浮点类型(float、double)
浮点类型 | 位数 | 字节数 | 说明 |
---|---|---|---|
float | 32 | 4 | 特殊声明需要在数字后面加F。 |
double | 64 | 8 | 系统默认为double。 |
1.2. 字符型(char)
char 16位 2字节 赋值时需要用' '包裹,只能放入一个字符或者编码。
1.3. 布尔型(boolean)
值只有true和false,用于做条件。能两个不参加算术运算。
二、引用数据类型
2.1. 类(class):
String和基本类型基本一样,但是是引用类型。
2.2接口
2.3数组
作为引用类型可以防止传送形参。
类型转换需要类型兼容。
运算符:
一、算术运算符
-
+
两端是数值或者可以转换为数值,表示加法。
char a='a'; int b=4; int c=a+b;//101
如果一端为String,则表示链接符号,结果为String
int age=20;
String msg="年龄";
String str=msg+20;//年龄20
-
/
整数相除,结果为整数。
其中一方为浮点数,结果为浮点数。
整数相除,当除数为0时,系统发生算术异常。当被除数是浮点数时,结果为无穷。
作用:
分解数字。
//获取一个三位数每一位上的数字 int num=123; int b_w=num/100;//百位 int s_w=num%100/10;//十位 int g_W=num%10;//个位
-
%
%运算结果的正负只与被取余数有关,(-5)%3=-2,5%(-3)=2。
-
++、--
可以实现变量的自加与自减。
运算符的贪婪法则:
一个运算符发现紧跟着的符号与自己一致,则成一对。
int a=10; int b=10; int c=a+++b;//a++ +b//a=11,b=10,c=20 int d=a+(++b)//a=10,b=11,d=21
二、 赋值运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | a=b | a=2,b=3 | a=3,b=3 |
+= | a=a+b | a=2,b=3 | a=5,b=3 |
-= | a=a-b | a=2,b=3 | a=-1,b=3 |
*= | a=a*b | a=2,b=3 | a=6,b=3 |
/= | a=a/b | a=2,b=3 | a=0,b=3 |
%= | a=a%b | a=2,b=3 | a=2,b=3 |
除了直接的赋值运算,剩余的赋值运算在与比自己类型内存空间大的类型运算时,会自动进行强制类型转换。
三、 比较运算符
运算符 | 范例 | 结果 |
---|---|---|
==(等于) | 4==3 | false |
!=(不等于) | 4!=3 | true |
> | 4>3 | true |
< | 4<3 | false |
>= | 4>=3 | true |
<= | 4<=3 | false |
==、!=、>=、<=中间没有空格,为防止==出现错误,可以把常量写在左边。
四、 逻辑运算符
运算符 | 名称 | 作用 |
---|---|---|
&& | 与 | 左右全为true才为真。 |
|| | 或 | 满足一项为true即可,左边为true右边不执行。 |
! | 非 | 取反。 |
五、 位运算符
运算符 | 运算 | 作用 |
---|---|---|
& | 位与 | 对每一位数进行与运算(相同为1) |
| | 位或 | 对每一位数进行或运算(有1为1) |
<< | 左移 | 转化为二进制后所有数字左移,空位补0 |
>> | 右移 | 转化为二进制后所有数字右移,多余清除 |
^ | 异或 | 对每位数字进行异或(相同为0不同为1) |
逻辑运算符与位运算符的异同(&&、&、|、||)
-
运算结果都为boolean值
-
区别
-
逻辑运算符两边为boolean值,位运算符两边是二进制数据
-
逻辑运算符会短路,位运算符不会
-
-
实际开发使用逻辑运算符多
与系统交互
-
事先导入数据包
import java.util.Scanner;
-
调用扫描函数
Scanner sc = new Scanner(System.in)
-
选择扫描范围
String name = sc.next();//遇到空格结束
String msg=sc.nextLine();//读取整行
int n=sc.nextInt();//读取第一个整数
double price=sc.nestDouble();//读取第一个浮点数
流程控制
6.1 选择结构
6.1.1 if语句
单一结构
//发奖金,没人发2万,如果超过5年,再多发2万
//输出奖金额度
public static void demo1(){
Scanner sc=new Scanner(System.in);
System.out.print("请输入您的工龄:");
int year=sc.nextInt();
double money=2;
if(year>=5){
money+=2;
}
System.out.println("奖金额度为:$"+money+"万");
}
二选一
public static void demo2(){
Scanner sc=new Scanner(System.in);
//请输入一个三位数 121 222 343
System.out.println("请输入一个三位数:");
int num=sc.nextInt();
if(num>=100 && num<1000){
int b=num/100;
int g=num%10;
if(b==g){
System.out.println(num+"是回文数字");
}else{
System.out.println(num+"不是回文数字");
}
}else{
System.out.println("请按规则输入三位数");
}
}
多选一(以计算器为例)
import java.util.Scanner;
public class calculato {
public static void main(String[] args) {
System.out.println("欢迎使用计算器,以下是该计算器的说明文档。"+'\n'+
"首先选择你需要的计算,只需等待提示后输入该计算对应的标识数字"+'\n'+"+ --- 0"
+'\t'+'\t'+"- --- 1"+'\n'+"× --- 2"+'\t'+'\t'+"÷ --- 3"+'\n'+"% --- 4"+'\t'+'\t'+"² --- 5"+'\n');
while(true){
System.out.print("请选择你需要的运算:");
Scanner sc = new Scanner(System.in);
int type=sc.nextInt()%6;
if(type==5){
System.out.print("请输入一个操作数");
int a=sc.nextInt();
a*=a;
System.out.println("结果为:"+a);
}
else{
System.out.println("请输入两个操作数");
switch(type){
case 0:
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println("结果为:"+(a+b));
break;
case 1:
int c=sc.nextInt();
int d=sc.nextInt();
System.out.println("结果为:"+(c-d));
break;
case 2:
int e=sc.nextInt();
int f=sc.nextInt();
System.out.println("结果为:"+(e*f));
break;
case 3:
int g=sc.nextInt();
int h=sc.nextInt();
if (g*h==0)
System.out.println("输入不合法");
break;
case 4:
int j=sc.nextInt();
int k=sc.nextInt();
if (j*k==0)
System.out.println("输入不合法");
else
System.out.println("结果为:"+(j%k));
break;
}
}
}
}
}