1.“+”号规则:
(1)当“+”号两边都是数字类型时,表现加法。
(2)如果“+”号两边中的任意一边出现字符或字符串类型,则表示连接字符串。
例如:
int age=18;
int score=60;
System.out.println("当前年龄为:" + age);//输出:当前年龄为:18
System.out.println(score+ 33); //输出:93
2.基本数据类型(数字类型6种,非数字类型2种)
数字类型:
- byte (最小的存整数的数据类型,不常用) 8位,1字节
- short(较小的存整数的数据类型,不常用) 16位,2字节 -215--215-1
- int 整型(存整数的) 32位,4字节 :-231 --231 -1 (常用!)
- long 长整型(存整数的) 64位,8字节:很大很大
- float 浮点数(存小数) 32位,4字节 :可以存小数(不常用)
- double 双精度数(存小数) 64位,8字节:很大很大(常用!)
数据类型之间的转换:由低到高,自动转换;由高到低,强制转换
非数字类型2种:
- boolean布尔类型: 8位,1字节,只能是:true或者false
- char 单字符型: 16位,2字节,用于存放一个字符(2**16 个元素)
3.变量的算数运算:
(1)运算符的优先级:
(2)算数运算规则:
+、 -、 *、 / 、% 和小学数学的运算规则一样,先乘除(包括取余),后加减。并且括号优先
重难点:自加和自减
package day02;
public class DataTypeDemo01 {
public static void main(String[] args) {
int a=6;
a++; //单独使用自加符号,++在前在后都一个样
System.out.println("a:"+a);
int b=6;
++b; //单独使用自加符号,++在前在后都一个样
System.out.println("b:"+b);
int c=a++; //++符号在a后面的,是先赋值,后自加
int d=++b; //++符号在b前面的,是先自加,后赋值
System.out.println("c:"+c);
System.out.println("d:"+d);
}
}
运行结果:
3.数据类型溢出与转换问题
数据的溢出,主要由于存储空间不足而造成(数据超过了可以存储的范围),数据类型的转换要根据情况选择:自动转换(由低到高,不会损失精度),或者强制转换(由高到低,可能损失精度)。
package day02;
public class DataTypeDemo02 {
public static void main(String[] args) {
//int a=10000000000; //数据的溢出,报错
long a=10000000000L; //数字+L来进行长整形的赋值
System.out.println("a:"+a);
float b=3.1415926F; //数字+F来进行float的赋值
System.out.println("b:"+b);
double c=6.884112655845525; //使用小数对变量赋值时,直接量就是double类型
System.out.println("c:"+c);
//int d=c; //数据类型由高到低,需要强制转换才能实现
int d=(int)c; //(int)+其他数据类型的变量,完成int类型的强制转换,只保留整数部分
System.out.println("d:"+d);
//算数运算时有些情况要特别注意:
int a1=7;
int a2=3;
int b1=a1/a2;
System.out.println("b1:"+b1); //整型数除法,只取整数部分
double a_1=a1; //数据类型由低到高,自动转换
double a_2=a2;
double b_1=a_1/a_2;
System.out.println("b_1:"+b_1);
char k='a';
int k1=(int)k; //强制转换如果遇上char类型,则转换的是其对应的字符码
System.out.println("k1:"+k1);
int n=10000000;
long m=100000000000000000L;
long answer=n*m; //注意在大数的乘法过程中,容易产生溢出,因此不建议用int,long这种数据类型
System.out.println("answer:"+answer);
}
}
运行结果:
4.变量的关系运算
//关系运算,运算符:>,<,==,>=,<=,!=(java中的关系运算符就是这6个,而且,不能用<>代表不等于)
int a3=8,a4=9;
boolean k1=(a3==a4);
boolean k2=(a3<=a4);
System.out.println("判断a3,a4是否相等:" + k1); //关系运算,通过boolean类变量来输出:true 或者 false
System.out.println("判断a3是否小于等于a4:" + k2);
System.out.println("判断a3是否大于等于a4:" + (a3>=a4)); //直接通过关系运算表达式输出关系运算结果(不通过变量),但要注意打括号表示运算优先级
输出结果:
课堂练习2(商品折扣计算器)
小程序:商品折扣计算器Calculator,要求:输入商品的原价,输入商品当前的折扣率,输出商品的折后价(折后价是去零头的)
package day02;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入商品的原价:");
double price=input.nextDouble(); //数据是小数,而且需要运算,因此选择double类型
System.out.println("请输入商品的折扣率(0-0.99):");
double rate=input.nextDouble();
int price2=(int)(price*rate); //抹零需要double类型转为int类型,是强制转换
System.out.println("商品折后价格为(抹零):"+price2);
}
}
运行结果:



