配套视频教程
常量
(1)在程序执行的过程中,其值不发生改变的量
(2)字面值常量
A:字符串常量 "hello"
B:整数常量 12,23
C:小数常量 12.345
D:字符常量 'a','A','0'
E:布尔常量 true,false
F:空常量 null(后面讲)
/* 常量: 在程序执行过程中,其值不发生改变的量。 分类: A:字面值常量 B:自定义常量(后面讲) 字面值常量 A:字符串常量 用双引号括起来的内容。 举例:"hello","world","HelloWorld" B:整数常量 所有的整数 举例:100,200 C:小数常量 所有的小数 举例:10.23,110.11 D:字符常量 用单引号括起来的内容 举例:'a','A','0' 错误的:'ab' E:布尔常量 比较特殊 举例:true,false F:空常量 后面讲 举例:null */ class ConstantDemo { public static void main(String[] args) { //字符串常量的输出 System.out.println("hello"); //整数常量的输出 System.out.println(100); //小数常量的输出 System.out.println(100.10); //字符常量的输出 System.out.println('a'); System.out.println('A'); System.out.println('0'); //这个是有问题的,字符常量有单引号,字符串常量用双引号 //System.out.println('ab'); //布尔常量的输出 System.out.println(true); System.out.println(false); } }
变量的三要素
类型,变量名,保存的值
基本数据类型
- 数值
- 整数 byte,short,int,long
25,-987, 0 - 小数 float,double
5.23,3.14
- 字符串
- 字符串 String
"你好","中国的首都" - 字符 char
'a', '的'
- 布尔型
boolean
使用一个变量的步骤
- 定义一个变量
数据类型 变量名;
int money;
2.给变量赋值
变量名 = 数值;
money = 1000 ;
第一步和第二步可以合并
数据类型 变量名=数值;
int money = 1000;
3.使用这个变量
System.out.println(money );
int age;//定义一个变量 age = 34; //给变量赋值 System.out.println(age); //在屏幕上输出变量的值 String name="zhangsan";//定义一个变量,并且马上给其赋值 System.out.println(name); //在屏幕上输出变量的值
定义几个变量
手机的品牌brand是华为,价格(price)2500,重量(weight)0.125千克,
颜色(color) 红
String brand = "华为"; int price = 2500; double weight = 0.125; char color = '红'; System.out.println("手机品牌:" + brand); System.out.println("手机价格:" + price);
image.png
获取用户输入
使用Scanner类
Scanner sc = new Scanner(System.in);
/* * Scanner:用于接收键盘录入数据。 * * 前面的时候: * A:导包 * B:创建对象 * C:调用方法 * */ import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // 创建对象 Scanner sc = new Scanner(System.in); int x = sc.nextInt(); System.out.println("x:" + x); } }
Scanner scanner = new Scanner(System.in);//定义一个从屏幕获得输入信息的变量scanner System.out.println("请输入您的年龄"); int age = scanner.nextInt();//获得用户从屏幕输入的一个整数,有一个阻塞的副作用,通俗点说,就是程序卡在这里了 System.out.println("您的年龄是" + age); System.out.println("请输入您的姓名"); String name = scanner.next();//获得用户从屏幕输入的一个字符串,有一个阻塞的副作用,通俗点说,就是程序卡在这里了 System.out.println("欢迎您" + name);
Scanner类的hasNextInt()和nextInt()方法
import java.util.Scanner; /* * 基本格式: * public boolean hasNextXxx():判断是否是某种类型的元素 * public Xxx nextXxx():获取该元素 * * 举例:用int类型的方法举例 * public boolean hasNextInt() * public int nextInt() * * 注意: * InputMismatchException:输入的和你想要的不匹配 */ public class ScannerDemo { public static void main(String[] args) { // 创建对象 Scanner sc = new Scanner(System.in); // 获取数据 if (sc.hasNextInt()) { int x = sc.nextInt(); System.out.println("x:" + x); } else { System.out.println("你输入的数据有误"); } } }
Scanner类中的nextLine()产生的换行符问题
import java.util.Scanner; /* * 常用的两个方法: * public int nextInt():获取一个int类型的值 * public String nextLine():获取一个String类型的值 * * 出现问题了: * 先获取一个数值,在获取一个字符串,会出现问题。 * 如何解决呢? * A:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。 * B:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。 */ public class ScannerDemo { public static void main(String[] args) { // 创建对象 Scanner sc = new Scanner(System.in); // 获取两个int类型的值 // int a = sc.nextInt(); // int b = sc.nextInt(); // System.out.println("a:" + a + ",b:" + b); // System.out.println("-------------------"); // 获取两个String类型的值 // String s1 = sc.nextLine(); // String s2 = sc.nextLine(); // System.out.println("s1:" + s1 + ",s2:" + s2); // System.out.println("-------------------"); // 先获取一个字符串,在获取一个int值 // String s1 = sc.nextLine(); // int b = sc.nextInt(); // System.out.println("s1:" + s1 + ",b:" + b); // System.out.println("-------------------"); // 先获取一个int值,在获取一个字符串,这里会出问题 // int a = sc.nextInt(); // String s2 = sc.nextLine(); // System.out.println("a:" + a + ",s2:" + s2); // System.out.println("-------------------"); int a = sc.nextInt(); Scanner sc2 = new Scanner(System.in); String s = sc2.nextLine(); System.out.println("a:" + a + ",s:" + s); } }
运算符
- 赋值运算符
=
员王浩的Java成绩是80分,学员张萌的Java成绩与王浩的相同,输出张萌的成绩
int wangScore = 80; //王浩成绩 int zhangScore; //张萌成绩 zhangScore = wangScore; System.out.println(“张萌成绩是" +zhangScore);
2.算数运算符
+,-,*,/,%
System.out.println(1600%5);//0-4 System.out.println(3%5);//3 System.out.println(3%2);//1 System.out.println(21%5);//1 System.out.println(13%4);//1 // System.out.println(m%n);//0----n-1 System.out.println(23%7);//2 System.out.println(25%7);//4
一个问题
用户在屏幕上输入一个天数,程序回答出是几周零几天?
// 用户在屏幕上输入一个天数,程序回答出是几周零几天? Scanner scanner = new Scanner(System.in); System.out.println("请输入天数"); //获得用户输入的天数dayCount int dayCount = scanner.nextInt(); System.out.println(dayCount+"天是"+ dayCount/7 + "周零" + dayCount%7 + "天");
关系运算符
比较高低、大小、长短等
张三的考试成绩是否比李四高
大象是否比乌龟更长寿
篮球跟地球一样大吗
,<
==,!=
=,<=
boolean (布尔)类型
boolean类型的值:
真:true
假:false
表达式(3+40%6)>(9/2*3)的结果是什么?
false
从控制台输入张三同学的成绩,与李四的成绩(80分)比较,输出“张三的成绩比李四的成绩高吗?” 的判断结果
image.png
int liSi = 80; //学员李四成绩 boolean isBig ; Scanner input = new Scanner(System.in); System.out.print("输入学员张三成绩: "); int zhangSan = input.nextInt(); //输入张三的成绩 isBig = zhangSan > liSi ; System.out.println( "张三成绩比李四高吗 ? "+isBig ); //输出比较结果
表达式
y = x-9+(x +90);
练习
商场推出幸运抽奖活动
抽奖规则:
顾客的四位会员卡号的
各位数字之和大于20,
则为幸运顾客。
image.png
类型转换
自动类型转换
某班第一次Java考试平均分81.29,第二次比第一次多2分,计算第二次考试平均分?
double firstAvg = 81.29; //第一次平均分 double secondAvg; //第二次平均分 int rise = 2; secondAvg = firstAvg + rise; System.out.println("第二次平均分是:" + secondAvg);
规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件
两种类型要兼容:
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型
强制类型转换
(类型名)表达式
int b = (int)10.2; double a = 10; int c = (int)a;
去年Apple笔记本所占市场份额是20,今年增长的市场份额是9.8,求今年所占份额?
int before = 20; //apple笔记本市场份额 double rise = 9.8; //增长的份额 int now = before+ (int)rise; //现在的份额
当强制转换时,精度有损失