变量和数据类型
数据类型说明
数据类型 | 大小 | 取值范围 |
byte | 1字节8位 | -128 ~ +127 |
short | 2字节16位 | -32768 (-2^15) ~ + 32767 (+2^15-1) |
int | 4字节32位 | -2147483648(-2^31) ~ + 2147483647(2^31-1) |
long | 8字节64位 | -2^63 ~ + 2^63-1 |
float | 4字节32位浮点数 | 1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38 |
double | 8字节64位浮点数 | 4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308 |
变量声明及使用
第一步:声明变量,根据数据类型在内存申请空间
数据类型 变量名;
第二步:赋值,即“将数据存储至对应的内存空间”
变量名 = 数值;
第一步和第二步可以合并
第三步:使用变量,即“取出数据使用”
数据类型 变量名=数值;
示例如下:
public class Demo1 {
//快捷键psvm,四个英文单词首字母
public static void main(String[] args) {
double score=98.5;//数据类型 变量名=数值;
String name="张三";//数据类型 变量名=数值;
char gender='男';//数据类型 变量名=数值;
System.out.println("java课程最高分为"+score);//字符串的连接用"+"
System.out.println("最高分学员姓名:"+name);
System.out.println("最高分学员性别:"+gender);
}
}
结果如图:
Scanner的使用
在程序运行中,我们通过使用Scanner来接收用户键盘输入的值。
第一步:我们需要导入Scanner类
import java.util.Scanner;
第二部:创建Scanner对象
Scanner input=new Scanner(System.in);
第三部:获得键盘输入的数据
int now=input.nextInt();
示例如下:
import java.util.Scanner;//导入Scanner类
/**
* @Date 2021/1/5
* @Description
*/
public class Demo5 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);//创建Scanner对象
System.out.println("请输入4位会员卡号:");
int num=sc.nextInt();//获得键盘输入的数据
System.out.println("会员卡号是:"+num);
}
}
结果如图:
自动类型转换
自动类型转换:1、隐式类型转换,大类型接收小类型,并且数值类型要相互兼容
2、小类型与大类型进行运算,则小类型自动转换成大类型
强制类型转换:当小类型接收大类型的数据时,就需要强制类型转换
示例如下:
public class Demo6 {
public static void main(String[] args) {
double avg=81.29;
int add=2;
//自动类型转换/隐式类型转换、大类型接收小类型
avg=avg+add;//小类型与大类型进行运算,则小类型自动转换成大类型
System.out.println(avg);
int money=1000;
//小类型接收大类型的数据,就需要强制类型转换
money=(int)(money*(1+0.05));
System.out.println(money);
//类型转换的特殊情况
int a=97;
char c=(char)a;
System.out.println(c);//ASCII码转换成字符
char ch='F';
int rst=ch;
System.out.println(rst);//字符转换成ASCII码
//拼接字符串
System.out.println("abc"+1+2+3);
}
}
结果如图:
算术运算符
基本的算数运算:+、-、*、/、%、++、- -
复合算术运算符:+=、-=、*=、/=、%=
a+=b–>a=a+b | a-=b–>a=a-b | a*=b–>a=a*b | a/=b–>a=a/b | a%=b–>a=a%b |
++的意思是自增1,- -的意思是自减1
a++本身的值等于加之前的a的值,++b本身的值等于加之后的b的值。
示例如下:
public class Demo8 {
public static void main(String[] args) {
int a=5;
int b=2;
int c=4;
int d=6;
c+=b;//等于c=c+b
d%=a;//等于d=d%a
System.out.println(a++); //a++本身的值等于加之前的a得值
System.out.println(a);
System.out.println(++b);//++b本身的值等于加之后的b的值
System.out.println(b);
//++的意思是自增1,--的意思是自减1
System.out.println(c);
System.out.println(d);
System.out.println(c--);
System.out.println(c);
System.out.println(--d);
System.out.println(d);
}
}
结果如图:
关系运算符与逻辑运算符
运算符 | 含义 | 范例 | 结果 |
== | 等于 | 5==6 | false |
!= | 不等于 | 5!=6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于等于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | true |
=为赋值运算符,==为等于运算符
关系表达式的结果为布尔值
运算符 | 含义 | 运算规则 |
&& | 短路与 | 两个操作数都是true,结果才是true |
| | | 短路或 | 两个操作数一个是true,结果就是true |
! | 非 | 操作数为true,结果为false。 操作数为false,结果为true。 |
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了。
但是逻辑与(&)和逻辑或(|)却不会这样,它们不管第一个操作数是否已经能确定表达式的值,都会继续计算第二个操作数,然后再确定表达式的值。
示例如下:
public class Demo9 {
public static void main(String[] args) {
int x=8;
int y=9;
System.out.println((++x==y)&&(x!=y));//短路与,只有两个都是true,结果才是true
System.out.println(x);
int a=5;
int b=6;
System.out.println( (++a!=b)||(++a==b));//短路或,只要有一个是true,结果就是true
System.out.println(a);
}
}
结果如图:
第一个输出打印语句里面,因为++x=9而且y=9,所以(++x==y)是对的(true),而x=y,所以(x!=y)是错的(false)。因为短路与只有在两个操作数都是true的情况下才能是true,所以该语句的结果为false。
第三个输出打印语句里面,因为++a=6而且b=6,所以++a应该等于b,则(++a!=b)是错的(false),此时a的值就为6了,再来个++a就等于7了,此时++a不等于b,所以(++a==b)也是错的(false)。因为短路或只要有一个操作数是true,结果就是true。但是这个语句中两个操作数都是false,所以该语句的结果也为false。