数据类型和运算符
今日目标:
1.变量
2.数据类型
3.简单的人机交互(Scanner的使用)
4.运算符:
赋值运算符
算术运算符
关系运算符
逻辑运算符
条件运算符
5.运算符的优先级
1.变量:
1.什么是变量:可以变化的量
2.你心中如何理解变量:一个用于装数据的容器。
思考:
A.计算机如何存储数据呢?
内存条,机械硬盘
B.硬盘和内存如何分工?
编辑的文档在没有保存时,临时存储在内存中,保存后,永久保存在硬盘上。
3.内存和硬盘又是如何存储数据的呢?
二进制文件的形式保存。
简述二进制 010 2 0 10110100 01011010 01011010 01011010
计算机中最小的二进制位数是8位
1byte(字节)=8bit(8位二进制)
1KB=1024byte
1MB=1024KB
1GB=1024MB
1TB=1024GB
4.命名口诀:字 下 美 人 数 骆驼
取名要有意义
不能使用关键字
2.数据类型:
public class Hello1 {
public static void main(String[] args) {
//1.声明一个变量并赋值:变量类型 变量名=变量值;
int a1=12;
//2.拆开:声明和赋值
int a2;
a2=15;
//3.同时声明多个变量
int a3,a4,a5;
//4.声明多个变量的同时赋值
int b1=10,b2=2,b3=2;
// 变量如果没有赋值,它有值吗?没有值
//System.out.println(a3);(程序会显错误)
}
}
基本数据类型4类8种:
1.整数(4种): Byte: 字节型 ,1个字节 -128~127
Short:短整型,2个字节 范围:
Int : 整型(默认),4个字节 范围:正负21亿左右
long :长整型,8个字节 63 31 -21亿 * 21亿 * 2~21亿 * 21亿 * 2
byte a=127,b=-128;//[-128,127]
short a1=32767;//[-32768,32767]
int a2=2147483647;//[-2^31,2^31-1]
long a3=2147483647;//[-2^63,2^63-1]
2.浮点数(小数2种):
float :单精度 :4个字节 1符号位 8指数位 23
Double:双精度:8个字节 采用科学计数法
3字符型:
char: 2个字节 a d f ab 3 4 你
4.布尔型 boolean :true false
引用数据类型:String 数组 类 接口
3.数据类型转换
1.自动类型转换条件:
类型兼容:整数型和整数型 非整数型和非整数型 整数型和非整数型
目标类型大于源类型:小的向大的转换
2.强制类型转换:目标类型小于源类型
案例:张三余额宝有100元,过了一天,收益0.1元,问:现在余额宝有多少?
用二进制解释int到byte的强制类型转换
转换规律:
1.数值类型之间转换:
小到大,正常转换
大到小,强制转换
2.整数 和char之间的转换
public class Hello3 {
public static void main(String[] args) {
//大到小,强制类型转换
short s=12,s1=12;
int i=13,i1=13;
s= (short) i;
i1=s1;
System.out.println("s="+s+" "+"i1="+i1);
byte b=1,b1=1;
long l=2,l1=2;
l=b;
b1= (byte) l1;
//不同类型 正常类型
//1.int(4) -floor(4)
int a1=12;
float f1=12.1f;
// a1= (int) f1;
f1=a1;
//2.int 4 double 8 byte -float
//不同类型 2 --非正常型
//int char
int a=97;
char c='a';
a=c;
System.out.println(a);
c= (char) a;
System.out.println(c);
System.out.println(a);
c=98;
System.out.println(c);
System.out.println((char)70);
}
}
4.变量使用案例:
1.变量的定义格式: 数据类型 变量名=变量值;
如: int a=88;含义是:将88这个数值赋给a这个整型变量。通俗来说,变量是一个容器,在内存中会开辟一个小空间用来存储数据。
打个比方:有一个房间,房间号是a,房间里面住的客人是c
Char a=’c’.
2.输出张三的姓名,年龄,部门,地址,等相关信息。
现公司出现人员变动,将张三换成李四,出现代码改动量大的问题。变量帮我们解决。
public class Hello4 {
public static void main(String[] args) {
//输出张三的姓名,年龄,部门,地址,等相关信息。
//现公司出现人员变动,将张三换成李四,出现代码改动量大的问题。变量帮我们解决。
//String helloString = new String(helloArray);
String name1="张三";
String age="20";
String bumen="行政部";
String dizhi="湖北";
System.out.println("姓名:"+name1+"\n年龄:"+age+"\n部门:"+bumen+"\n地址:"+dizhi);
name1="李四";
System.out.println("姓名:"+name1+"\n年龄:"+age+"\n部门:"+bumen+"\n地址:"+dizhi);
}
}
5.程序如何同用户交互:(Scanner)
1.思考:打游戏时,控制英雄的运动和技能是如何实现的?
在键盘上输入的上下左右,游戏程序如何知道?
2.分析:程序中必然有一个装置来接收键盘按键的值。
3.Scanner的使用
分析,记事本上打字的过程:系统接收键盘上的按键对应的字母,然后传入到搜狗输入法,合成相应的文字,然后在电脑屏幕上显示。
4.思考:java程序如何接收键盘输入的内容呢?
Jdk中封装了一个类Scanner,该类的职责就是接收键盘的输入值,并保存到程序的变量中,体现了程序和用户的交互功能。
使用步骤:案例演示(String,int,double,boolean输入)
1.导包(别人写的类,作为当前类的引用)
2.创建对象(是否需要创建对象,取决于调用的方法是否为static静态的)
3.对象调用方法来接收输入值
.next()//输入内容
String name=sc.next();
byte age=sc.nextByte();
float gonz=sc.nextFloat();
请输入一个人的 姓名,年龄,存款,婚否?
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name=sc.next();
System.out.println("姓名:"+name);
System.out.println("请输入你的年龄:");
byte age=sc.nextByte();
System.out.println("年龄 : " + age);
System.out.println("请输入你的工资:");
float gonz=sc.nextFloat();
System.out.println("工资 : " +gonz);
System.out.println("婚否:");
String hun=sc.next();
System.out.println(hun);
// main2();
}
6.赋值运算符:
1.赋值:往变量对应的内存空间里面塞一个值。
2.书写格式: int a = 8; 往往在定义一个变量的时候会为其赋值。
3.赋值特点:新值会覆盖原来的旧值
第一次给变量赋值称为“初始化”。
4.案例:
如何借助赋值运算符实现两个数的交换。
public static void main2() {
int a=5,b=10,c;
c=a;
a=b;
b=c;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("------------------------------------");
}
private static void main3() {
int a=6,b=8;
a=a+b;
b=a-b;
a=a-b;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
7.算术运算符:
1.基本算术运算:+ - * / % ++i i—
重点:++ – 在变量的前面还是后面
2.复合算术运算:+= -= *= /= %=
3.案例:
用户输入自己的会员卡号(3位数),程序取出会员卡号的各个位数,并打印结果。
计算出个位,十位,百位 输出
private static void main4() {
Scanner kahao=new Scanner(System.in);
System.out.println("请输入自己的会员卡号(3位数):");
int a1=kahao.nextInt();
int b1,b2,b3;
b1=a1%10;
b2=(a1/10)%10;
b3=a1/10/10;
System.out.println("卡号为:"+b3+" "+b2+" "+b1);
}
8.关系运算符
== != < > >= <=
关系运算符的结果是布尔值
1<i<3 i<3&&i>1
9.逻辑运算符:
参与逻辑运算符的表达式必须是布尔类型
逻辑与 & 逻辑或 |
短路与 && 短路或 ||
如何理解短路:电路图中的短路是:电流绕过某段电器,从导线走。
1.&&运算中,第一个条件为false,整个语句结果必然为false,所以程序忽略第二个条件, 此为短路与
2.||运算中,第一个条件为true,整个语句结果必然为true,所以程序忽略第二个条件, 此为短路或
3.优先级:! > && > ||
private static void Main1() {
int i=0,b=0;
System.out.println(false&&i++>0);//后面的i++不会进行运算
System.out.println("i = " + i);
System.out.println(false&b++>0);//后面的b++会进行运算
System.out.println("b = " + b);
System.out.println(true||++i<2);
System.out.println("i = " + i);//2
System.out.println(true|++b<2);
System.out.println("b = " + b);//2
System.out.println(!true);
}
10.条件运算符
1.书写格式:
也称三元(三目)运算符
2.使用场景:当一个变量的取值有两种可能时,用条件运算符来为变量赋值。
3.案例:用户输入考试成绩,判断是否及格,并打印结果。
4.课堂小案例:输入自己的游戏得分,大于100是王者,否则是青铜,并打印结果。
private static void Main2() {
int age=18;
System.out.println(age>=18?"可以进":"再等等");
String s=age>=18?"可以进":"再等等";//三目运算符必须要有接收值
System.out.println(s);
}
11.运算符的优先级
12.补充:位运算符 & |
案例:6&3 =2 6|3=7 转换成二进制 110 和011 每个位上0代表假,1代表真
110
011 &
01 0
1 1 0
0 1 1 |
1 1 1
private static void Main3() {
System.out.println(5|8);
System.out.println(5|5);
System.out.println(5|2);
System.out.println(12&12);
System.out.println(23|15);
}
作业:
1.小明在银行存了100元,年利率是5%,存了三年,用程序算出并打印三年后的存款是多 少?
2.用户依次根据程序的提示,输入自己的姓名,年龄,余额宝金额。利用不同数据类型的 变量一次性打印以上信息。
3.使用变量存储数据,实现个人简历信息的输出
效果图:
4、接受用户输入的两个数,分别求这两个数的和,差,积,商,模
5、根据天数(由用户输入)计算这些天数中有几周和剩余的天数,例如:用户输入的是45
,输出结果为:45天是6周余3天
6、商场为员工提供了基本工资(3000元)、物价津贴及房租津贴,其中物价津贴为基本工资的40%,房租津贴为基本工资的25%。编程计算实领工资
编写程序,定义变量分别存放一本图书的信息,图书的信息包括:书名(bookName)、作者(bookAuthor)、单价(bookPrice)、库存量(bookStock)、是否为热售图书(isHot),要求图书的信息由用户输入
1.计算结果x+a%3*(int)(x+y)%2/4 a=7(int) x=2.5 y=4.7(double)
2.计算结果(float)(a+b)/2+(int)x%(int)y a=2 b=3 x=3.5 y=2.5
3.使用条件运算符实现求两个数中的较大值并将最大值输出,这两个数是由用户从控制台输入的
4.让用户输入矩形的两个边长(int数据类型),用条件表达式判断:如果两个边长相等,则为正方形,不等为长方形,最后并将其面积输出。
例如:用户输入的长和宽是:4和5,则输出结果是:该图形是长方形,面积是20
5.用JAVA代码实现一个数字加密器,加密规则是:加密结果 = (整数*10+5)/2 + 3.14159加密结果仍为一整数,其中用到的参数整数是由用户输入的,例如:用户输入的是:5,则加密后输出的结果是:30(注意:加密后的结果一定是整数,数据类型转换)
6、输入一个数,判断该数是不是3的倍数,并将结果输出
7、题目:输入三个整数x,y,z,请把这三个数由小到大输出。
8、题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
9.用户输入自己的随机四位数卡号,编写程序输出提示信息是否中奖。中奖规则,个位数字+十位数字+百位数字+千位数字 之和>18则中奖。
提示信息分别是:“恭喜您,中奖啦!”“很遗憾,没有中奖!”
10.张三公交卡有72.5元,李四公交卡有26.3元,让他二人交换公交卡,编写程序输出交换前和交换后,两人手上公交卡的金额。
11.题目:用户输入一个数,判断是否是"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
部分作业代码:
import java.util.Scanner;
public class ZuoYe {
public static void main(String[] args) {
Seven();
}
private static void Seven() {
System.out.println("请输入存放图书的信息");
Scanner sc7=new Scanner(System.in);
System.out.println("书名:");
String bookName=sc7.next();
System.out.println("作者:");
String bookAuthor=sc7.next();
System.out.println("单价:");
String bookPrice=sc7.next();
System.out.println("库存量:");
String bookStock=sc7.next();
System.out.println("是否为热销图书:");
String isHot=sc7.next();
System.out.println("图书的信息为:书名:"+bookName+" 作者:"+bookAuthor+" 单价:"+bookPrice+
" 库存量:"+bookStock+" "+isHot+"热销图书");
}
private static void Six() {
double a=3000,b;
b=a+a*0.4+a*0.25;
System.out.println("实领工资为:"+b+"元");
}
private static void Five() {
System.out.println("请输入天数:");
Scanner sc5=new Scanner(System.in);
int a1=sc5.nextInt();
System.out.println(a1+"天是"+(a1/7)+"周余"+(a1%7)+"天");
}
private static void Four() {
System.out.println("请输入两个数:");
Scanner sc4=new Scanner(System.in);
double a=sc4.nextDouble(),b=sc4.nextDouble();
System.out.println("这两个数的和为:"+(a+b));
System.out.println("这两个数的差为:"+(a-b));
System.out.println("这两个数的积为:"+(a*b));
System.out.println("这两个数的商为:"+(a/b));
System.out.println("这两个数的模为:"+(a%b));
}
private static void Three() {
String name="小明",jishu="Java",aihao="篮球";
int age=25,shijian=3,xiangmu=5;
System.out.println("这个同学的姓名是:"+name);
System.out.println("年龄是:"+age);
System.out.println("工作了"+shijian+"年");
System.out.println("做过"+xiangmu+"个项目");
System.out.println("技术方向是"+jishu);
System.out.println("兴趣爱好是:"+aihao);
}
private static void Two() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入自己的姓名:");
String name=sc.next();
System.out.println("请输入自己的年龄:");
String age=sc.next();
System.out.println("请输入自己的余额宝金额:");
double jine=sc.nextDouble();
System.out.println(name+" "+age+"岁 "+"余额宝金额:"+jine);
}
private static void One() {
double a1=100.0,b1;
System.out.println("存款数为:"+a1);
b1=a1*1.05*1.05*1.05;
System.out.println("三年后存款数为:"+b1);
}
}
提升
import java.util.Scanner;
public class ZuoYe2 {
public static void main(String[] args) {
eleven();
}
private static void eleven() {
System.out.println("请输入一个三位数:");
Scanner sc11=new Scanner(System.in);
int a=sc11.nextInt(),b;
// System.out.println((a/100)+" "+((a/10)%10)+" "+(a%10));
// b=(a/100)^3+((a/10)%10)^3+(a%10)^3;
b=(a/100)*(a/100)*(a/100)+((a/10)%10)*((a/10)%10)*((a/10)%10)+(a%10)*(a%10)*(a%10);
if (a==b){
System.out.println("这个数是水仙花数");
}else {
System.out.println("这个数不是水仙花数1");
}
}
private static void seven() {
int a,b,c;
Scanner sc7=new Scanner(System.in);
a=sc7.nextInt();b=sc7.nextInt();c=sc7.nextInt();
int max=a>b?a:b;
max=max>c?max:c;
int min=a<b?a:b;
min=min<c?min:c;
int mid=a+b+c-max-min;
System.out.println(min+" "+mid+" "+max);
}
private static void eight() {
int score;
Scanner sc8=new Scanner(System.in);
System.out.println("请输入成绩");
score=sc8.nextInt();
System.out.println(score>=90?"A":(score>=60?"B":"C"));
}
private static void Two() {
int a=2,b=3;
double x=3.5,y=2.5;
System.out.println((float)(a+b)/2+(int)x%(int)y);
}
private static void One() {
int a=7;
double x=2.5,y=4.7;
System.out.println(x+a%3*(int)(x+y)%2/4);
}
}
下次课程预习内容:
主要知识点:if 和switch以及相关变形选择结构