一、数据类型
1.简介
基本数据类型:
整数:byte short int long 分别为1 2 4 8字节
小数:float double 单精度 双精度 (float赋值数字后面必须加F,float a=12.2F)
字符:char
布尔值:boolean
引用类型:
数组 [ ]
类 class
(自定义,系统类String)
接口 interface
2.数据转换
自然转换:
基本条件:①兼容类型;②目标类型大于源类型,左边=右边,小的赋值给大的
byte short char-int-long-float-double
byte,short,char相互转换,他们参与运算首先转为int类型
如果一个操作数位double型,则整个表达式可以提升为double型
boolean类型不能和其他七种类型转换
强制转换:
基本条件:①兼容类型;②目标类型小于源类型,大的赋值给小的;③目标=(数据类型int、double等)源;④可能造成数据精度丢失
public class Work5 {
public static void main(String[] args) {
int i=1;
byte b1=5;
//+=会自动做强转,b1=(byte)(b1+i)
b1+=i;
byte b2=5;
b2=(byte) (b2+i); //基本强制转换式
}
}
二、选择结构
1.逻辑运算符
2.if结构
if(条件){
//代码块
}
if(条件){
//代码块
}else{
//代码块
}
//if语句在考虑限定范围时,可以把剩余的归为else;不强制必须有else
例:输入成绩,Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
//输入成绩,Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他
Scanner scanner=new Scanner(System.in);
System.out.println("Java成绩");
int java=scanner.nextInt();
System.out.println("音乐成绩");
int music=scanner.nextInt();
if(java>98&&music>80||java==100&&music>70) {
System.out.println("奖励iPhone13");
}
}
}
例:输入四位抽奖号码,百分位和随机数字相同,则得到奖励
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
//输入成绩,输出对应的等级
Scanner scanner=new Scanner(System.in);
System.out.println("请输入四位抽奖号码");
int number=scanner.nextInt();
//四位抽奖号码除以100,再与10进行模运算,得到百分位数字
//如1234;1234/100=12;12%10余数为2
int hunder=number/100%10;
//random的类库为Java默认,不需要再引用。
//此语句为随机产生小数,需要乘以10增大十倍,再用int强制取整数部分
int random=(int)(Math.random()*10);
System.out.println("中奖百位号:"+random);
if(hunder==random) {
System.out.println("恭喜您,赢得大奖!");
}else {
System.out.println("很遗憾,再接再励!");
}
}
}
3.多重if
if(条件1){
//代码块1
}
else if(条件2){
//代码块2
}
······
else{
//代码块n
}
if有且只有一个
else if 可以 没有、一个、多个
else 可以 没有、一个
例:输入考试成绩,得到相应的等级评价
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
//输入成绩,输出对应的等级
Scanner scanner=new Scanner(System.in);
System.out.println("请输入考试成绩");
int score=scanner.nextInt();
if(score>100||score<0) {
System.out.println("成绩不存在");
}else if(score>=90) {
System.out.println("成绩优秀");
}else if(score>=80) {
System.out.println("成绩良好");
}else if(score>=60) {
System.out.println("成绩中等");
}else {
System.out.println("成绩不合格");
}
}
}
4.三目运算符
目:参与运算的个数
三目运算符:(boolean值表达式)?(表达值1):(表达值2);
举例: int date=(date1>date2)?(date1):(date2);
如果date1>date2成立,则date=date1;反之亦然。
例:求两个数的最大值,使用if和三目运算符
import java.util.Scanner;
public class Work{
public static void main(String[] args) {
//求两个数的最大值(使用选择结构和三目运算符)
Scanner scanner=new Scanner(System.in);
System.out.println("输入第一个数");
double date1=scanner.nextDouble();
System.out.println("输入第二个数");
double date2=scanner.nextDouble();
// double date;
// if(date1>date2) {
// date=date1;
// }else {
// date=date2;
// }
// System.out.println("最大值="+date);
double date=(date1>date2)?(date1):(date2);
System.out.println("最大值="+date);
}
}
5.switch-case
switch(表达式){
case 常量:
//执行代码
break;
default:
//执行代码
break;
}
default 可以不要
case 后面的常量不能重复
break 每个结束之后必须有,如果没有就会case穿透,一旦运行就会执行全部代码,
直到代码全部结束,或遇到后面的break
swit-case匹配数据有限,是多重if的特殊用法
例:输入两个变量,做基本运算
import java.util.Scanner;
public class Work10 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入第一个数");
int a=scanner.nextInt();
System.out.println("输入第二个数");
int b=scanner.nextInt();
System.out.println("输入运算符号");
String type=scanner.next();
int result=0;
boolean flag=true;//布尔值,对运算符号判断,初始为正确数据进入运算
boolean zero=false;//布尔值,对除数是否为0判断,初始为错误除数不为零
switch(type){
case "+":
result=a+b;
break;
case "-":
result=a-b;
break;
case "*":
result=a*b;
break;
case "/":
if(b==0) {
flag=false;
zero=false;
}else {
result=a/b;
break;
}
default:
flag=false;
break;
}
if(flag) {
System.out.print("答案="+result);
}else if(zero) {
System.out.println("除数为零,无法计算!");
}else {
System.out.print("运算符号不符合规范");
}
}
}
三、拓展
1.密码账号登录
系统中有原始的账号密码,用户输入账号密码,提示登录成功或者失败
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入账号");
int account=scanner.nextInt();
System.out.println("输入密码");
int password=scanner.nextInt();
int accounted=123123;
int passworded=456456;
//账号和密码都要正确,逻辑运算符用 &&与
if(account==accounted&&password==passworded) {
System.out.println("登陆成功!");
}else {
System.out.println("登陆失败!");
}
}
}
2.用多重if表达分段函数
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入变量");
int x=scanner.nextInt();
int y;
if(x>0) {
y=1;
}else {
if(x==0) {
y=0;
}else {
y=-1;
}
}
System.out.println("y="+y);
}
}
3.学习百米赛跑
学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组
首先判断是否进入决赛,然后再分男女组
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入学生成绩");
double time=scanner.nextDouble();
//性别男女为文字,此处定义输入字符串
System.out.println("输入学生性别");
String sex=scanner.next();
if(time<10) {
if(sex.equals("男")) {
System.out.println("恭喜,进入男子决赛组!");
}else {
System.out.println("恭喜,进入女子决赛组!");
}
}else {
System.out.println("很遗憾,学生淘汰!");
}
}
}
4.购物计算
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("顾客是否会员");
String member=scanner.next();
System.out.println("请输入应付金额");
double price=scanner.nextDouble();
double pay;//定义实际支付的变量,储存相应数据
if(member.equals("yes")) {
if(price>200) {
pay=price*0.75;
}else {
pay=price*0.8;
}
}else {
if(price>100) {
pay=price*0.9;
}else {
pay=price;
}
}
System.out.println("实际付款="+pay);
}
}
5.求三个数的最大值(使用三目运算符)
import java.util.Scanner;
public class Work08 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入第一个数");
int a=scanner.nextInt();
System.out.println("输入第二个数");
int b=scanner.nextInt();
System.out.println("输入第三个数");
int c=scanner.nextInt();
//判断(a>b)?(a):(b)会得到两个之间的最大值,然后拿来和c比较大小
//(a>b)?(a):(b)>C作为表达式,((a>b)?(a):(b))和c为表达式的出的值
int date2=(((a>b)?(a):(b))>c)?((a>b)?(a):(b)):(c);
//先判断(a>c)?(a):(c)和(b>c)?(b):(c),然后判断a和b的大小
//(a>b)作为表达式+?+(a>c)?(a):(c) :(b>c)?(b):(c)
int date3=(a>b)?(a>c)?(a):(c):(b>c)?(b):(c);
System.out.println("最大值2="+date2);
System.out.println("最大值3="+date3);
}
}
6.输入三个数,然后按从小到大的顺序输出
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入第一个数");
int a=scanner.nextInt();
System.out.println("输入第二个数");
int b=scanner.nextInt();
System.out.println("输入第三个数");
int c=scanner.nextInt();
if(a>b) {
int x;
x=a;
a=b;
b=x;
}
if(a>c) {
int y;
y=a;
a=c;
c=y;
}
if(b>c) {
int z;
z=b;
b=c;
c=z;
}
System.out.println("最小值="+a);
System.out.println("中间值="+b);
System.out.println("最大值="+c);
}
}
顺序结构就是按程序执行,本章主要为选择结构,基本运用必须掌握,适当延伸回顾。
————勤劳解决温饱,知识改变命运,继续坚持!!!