数据类型:是在内存中开辟多大的空间
变量:内存中空间首地址不好记,起个别名
值:内存中这个空间里面放的值
//在内存中开辟4字节的空间来存放1000这个整数,这个空间不好记,起别名叫做
money 2 int money = 1000;
1、合法:
1)、只能由字母、数字、_、$组成
2)、不能以数字开头
3)、不能是java的关键字
2、规范:
见名知义;
数据类型分为基本数据类型和引用类型
基本数据类型有以下8个:
1、存整数的有4个: byte(1)、short(2)、int(4)、long(8)
2、存小数的有2个: float(4)、double(8) 尽量采用double来表示小数
3、存字符的1个: char(2)
4、布尔类型1个: boolean(1bit) 有
1个引用类型要关注:String字符串类型 String str = “abc中国”;
// 数据类型
// 两种: 基本数据类型和引用数据类型
//8大基本数据类型:
// 整数类型: byte,short,int,long
//byte: 一个字节,-128~127
byte b = 10;
System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
//short: 两个字节,-32768~32767
short s = 100;
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
//int: 四个字节,-2147483648~2147483647
int i = 1000;
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
//long: 八个字节,-9223372036854775808~92
long l = 100_000_000_000_000L;
System.out.println(Long.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
// 浮点数类型: float,double
// float单精度浮点型: 4个字节,-3.4E38~3.4E38
float f = 3.14f;
System.out.println(Float.MIN_VALUE);
System.out.println(Float.MAX_VALUE);
// double双精度浮点型: 8个字节,-1.7E308~1.7E308
double d = 2.5d;
System.out.println("------");
System.out.println(Double.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
// 字符类型: char
// 字符类型只有一种: char 占两个字节
char c = 'a';
// 布尔类型: booledan
// 占一个字节只有两个取值true和false
// 引用数据类型: 类(class),接口(interface),数组(array)
字符串和变量连接用"+";
一旦赋了值就不能再改变的量。用final来修饰
通常情况下,常量全大写
final int PI = 20;//常量
PI = 30;//报错,i只能为20,不能修改
//1.导入Scanner类
import java.util.Scanner;
// 2. 创建Scanner对象,绑定到System.in
Scanner scanner =new Scanner(System.in);
// 3. 提示用户输入信息
System.out.print("请输入一个整数:");
// 4. 接收用户输入的信息
int num = scanner.nextInt();
// 5. 输出用户输入的信息
System.out.println("您输入的整数是:" + num);
前提条件:是数值(整数和小数)类型之间的转换
看是自动类型转换还是强制类型转换,主要看是否有风险
1、自动类型转换 小——>大
2、强制类型转换 大 ——>小
如果是一个表达式,结果就为表达式中最大的那个类型
double = int + double
在Java中整型、实型、字符型被视为简单数据类型,
这些类型由低级到高级分别为(byte,short,char)–int–long–float–double
=将右边的值赋给左边
Scanner input = new Scanner(System.in);
System.out.print("请输入第一个数:");
int num1 = input.nextInt();
System.out.print("请输入第二个数:");
int num2 = input.nextInt();
System.out.println("交换前的num1:" + num1 + ",num2:" + num2);
//num1和num2交换
int temp = num1;
num1 = num2;
num2 = temp;
System.out.println("交换后的:num1:" + num1 + ",num2:" + num2);
+:数值之间的“+”表示两个数相加;如出现字符串,则表示相连接
-、*:正常的减和乘
/:按照上溯到最大的那个类型处理,必须两个整型相除,得到结果一定是整型
%:取余数
++:自增
–:自减
int num1 = 9;
//num1++;
//System.out.println(++num1); //先自增,后打印输出num1。等同于下面两句代码4
/*num1 = num1 + 1;
System.out.println(num1);*/
/*System.out.println(num1++);//先打印输出num1,再自增。等同于下面两句代码
System.out.println(num1);
num1 = num1 + 1;*/
+=、-=、*=、/=、%=
// num1+=2; 等同于 num1 = num1 + 2;
// num1‐=2; 等同于 num1 = num1 ‐ 2;
// num1*=2; 等同于 num1 = num1 * 2;
// num1/=2; 等同于 num1 = num1 / 2;
// num1%=2; 等同于 num1 = num1 % 2;
关系运算符得到的结果一定是个布尔类型,也就是结果要么是true,要么是false
==、!=、>、<、>=、<=
&& 短路与
|| 短路或
! 非(取反)
短路与指的是当第一个表达式为false时,整个表达式一定为false,后面的表达式代码就不执行了
短路或指的是当第一个表达式为true时,整个表达式一定为true,后面的表达式代码就不执行了
标准的与或非
是
& 与
| 或
!非
没有短路的概念,也就意味着所有表达式的代码都运行,不管第一个表示式的结果。
语法:
变量 = 条件 ? 表达式1 : 表达式2;
当条件为true时,把表达式1的结果赋给变量
当条件为false时,把表达式2的结果赋给变量
int min;
min = 5 < 7 ? 5 : 7;
System.out.println(min);
//min=5
min = 10 < 7 ? 10 : 7;
System.out.println(min);//min = 7;
Scanner input = new Scanner(System.in);
System.out.print("请输入4位的会员卡号:");
int card = input.nextInt();
int ge = card % 10;
int shi = (card / 10) % 10;
int bai = (card / 100) % 10;
int qian = card / 1000;
int result = qian + bai + shi + ge;
System.out.println("会员卡号是:" + card);
System.out.println("千位数:" + qian + ",百位数:" + bai + ",十位数:" + shi + ",个位数:" + ge);
System.out.println("会员卡号" + card + "各位之和:" + result);
//根据分解后的数字之和,判断用户是否中奖。如果数字之和大于20,则中奖
String msg = result > 20 ? "会员卡号" + card + "的会员,您中奖了!奖品是MP3!" : "未中奖";
System.out.println(msg);