1、认识变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
变量是一种使用方便的占位符,用于引用计算机内存地址,使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。
简单使用ppt画笔,画图演示,变量指向值所在的内存空间地址
酒店房间为例:房间对应程序的变量
房间类型对应变量类型
房间号对应变量名
入住客人对应变量值
2、变量的命名规则
变量命名规则:
首字母:字母,下划线,$符
其它:数字,字母,下划线,$符
变量命名规范:
简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的首字母大写。例如:myScore,也称为驼峰命名法
变量命名经验:
实际开发时,为了易于维护,尽量使用有意义的变量名,比如性别,就命名为sex,如果直接命名为a,别人不看代码都不知道具体含义
3、java的8种基本数据类型:
byte(1个字节),
char(2个字节),
short(2个字节),
int(4个字节),
float(4个字节),
long(8个字节),
double(8个字节),
boolean(只占一位,即1/8字节)
一个字节占八位-bit,范围是-2的八次方到2的八次方-1
在计算机科学中,bit是表示信息的最小单位,叫做二进制位;一般用0和1表示
注意:String不是基本数据类型
4、变量的声明和使用
第一步:声明变量,根据数据类型在内存申请空间
第二步:赋值,即“将数据存储至对应的内存空间”
第三步:使用变量,即“取出数据使用”
注:
第一步和第二步可以合并
数据类型 变量名 = 数值;
示例:
每种常用数据类型都简单演示一下定义和使用,注意异常赋值的情况
public static void main(String[] args) {
double score = 98.5;
String name = "张三";
char sex = '男';
System.out.println("本次考试成绩最高分: " + score);
System.out.println("最高分得主: " + name);
System.out.println("性别: " + sex);
}
注意:局部变量定义后,必须初始化才能使用,否则编译不通过。
5、常量的声明和使用
常量是已经定义,不可变的,注意常量的写法
使用的关键字为final 代表最终不可变的
示例:
public static void main(String[] args) {
// 计算圆的面积
final double PI=3.14;
int r = 2;
// 面积;
double area = PI * r * r;
System.out.println("圆的面积为:" + area);
}
优点:比较安全
推荐做法:
(1)常量名通常大写
(2)不同字符使用下划线分隔
(3)只能被赋值一次,通常定义时即对其初始化
6、接收键盘输入
第一步:导入Scanner类
import java.util.Scanner;
第二步:创建Scanner对象
Scanner input = new Scanner(System.in);
第三步:获得键盘输入的数据
int now = input.nextInt();
示例:
public static void main(String[] args) {
// Scanner,系统输入对象,可以在控制台进行输入操作
Scanner input = new Scanner(System.in);
System.out.print("请输入姓名:");
String name = input.next();
System.out.print("请输入年龄:");
int age = input.nextInt();
System.out.print("请输入工资:");
double salary = input.nextDouble();
System.out.println("您输入的信息为:[" + name + "," + age + "," + salary + "]");
input.close();
}
7、运算符
赋值运算符:=
将右侧的值(或者变量)赋给左侧的变量
示例:
int wangScore = 80; // 王浩成绩
int zhangScore; // 张萌成绩
// 错误,变量的使用前,必须先赋值
// wangScore = zhangScore;
zhangScore = wangScore; //将右边的值给左边的变量
System.out.println(“张萌成绩是" +zhangScore);
表达式
算表达式就是符号(如加号、减号)与操作数(如b,3等)的组合
赋值运算符的运用:
两个值得互换:
public static void main(String[] args) {
// 两个值得互换
int num1 = 8;
int num2 = 9;
System.out.println("交换前:num1=" + num1 + ", num2=" + num2);
int temp = num1;
num1 = num2;
num2 = temp;
System.out.println("交换后:num1=" + num1 + ", num2=" + num2);
// 两个值得互换
int num3 = 4;
int num4 = 5;
System.out.println("交换前:num3=" + num3 + ", num4=" + num4);
num3 = num3 + num4;
num4 = num3 - num4;
num3 = num3 - num4;
System.out.println("交换后:num3=" + num3 + ", num4=" + num4);
}
8、基本算术运算符
+、-、*、/、%、++、--
重点展示求余 %,++,-- 的用法
复合算术运算符
+=、-=、*=、/=、%=
演示一个用法即可,讲解原理
示例:
public static void main(String[] args) {
// 算数运算符
// 加 +
int num1 = 98;
int num2 = 89;
int sum = num1 + num2;
System.out.println("两个数之和:" + sum);
// 减 -
int mut = num1 - num2;
System.out.println("两个数之差:" + mut);
// 乘 *
int cf = num1 * num2;
System.out.println("两个数之积:" + cf);
// 除 /
double sub = num1/num2;
System.out.println("两个数相除:" + sub);
// 求余数
int num3 = num2 % 2;
System.out.println("89与2的余数:" + num3);
// ++ --
int num4 = 10;
// ++ -- 写在后面,是先使用后加减
// int temp = num4;
// num4 = num4 + 1;
System.out.println(num4++);
System.out.println(num4--);
int num5 = 10;
// ++ -- 写在前面,是先加减后使用
System.out.println(++num5);
System.out.println(--num5);
// 复合运算 += -= *= /= %=
int num6 = 20;
// num6 = num6 + 10;
num6 += 10;
System.out.println(num6);
// 例外
short num5 = 6;
num5 += num3;
// num5 = num5 + num3;
System.out.println(num5);
}
9、练习:会员卡号数字和
public static void main(String[] args) {
// 练习:计算会员卡号各个位置上数字之和
Scanner input = new Scanner(System.in);
System.out.print("请输入会员卡:");
int vip = input.nextInt();
int q = vip / 1000;
int b = vip % 1000 / 100;
int s = vip / 10 % 10;
int g = vip % 10;
System.out.println("千位:" + q + ",百位:" + b + ",十位:" + s + ",个位:" + g);
System.out.println("各个位置数字之和为:" + (q + b + s + g));
input.close();
}
10、自动、强制类型转换
规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件
两种类型要兼容
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型
示例:
public static void main(String[] args) {
// 类型转换 自动和强制
double salary = 8234.5;
// 自动转换
double avgSalary = 9000;
System.out.println(avgSalary);
// 工资提高1000
int addSalary = 1000;
// 新的工资
double newSalary = salary + addSalary;
System.out.println(newSalary);
// 强制类型转换
// 计算日薪,高精度到低精度,强制转换后,自动取整
int daySalary = (int)(salary / 30 + 30);
System.out.println("日薪:" + daySalary);
}
11、关系运算符
实例:
public static void main(String[] args) {
// 布尔类型变量
double salary = 8000;
boolean flag = salary > 6000;
// 日薪是否等于300
boolean flag1 = salary / 30 != 300;
System.out.println("工资是否大于6000?" + flag);
System.out.println("日薪是否等于300?" + flag1);
}
注意:
=为赋值运算符,==为等于运算符
关系表达式的结果为布尔值
>、<、>=、<= 运算符的优先级别高于==、!=
>、<、>=、<=运算符只支持数值类型的数据比较
12、布尔数据类型
boolean (布尔)类型
boolean类型的值
真:true
假:false
示例:
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 ); //输出比较结果
13、逻辑运算符
&& 短路与 两个表达式(操作数)都是true,结果才是true,即第一个表达式为false,不看第二个表达式
|| 短路或 两个表达式都是false,结果才是false,即第一个表达式为true,不看第二个表达式
! 非 操作数为true,结果为false 反之亦然
优先级别
! > && > ||
注意:
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;
示例:
int x=8;
int y=9;
System.out.println((++x==y)&&(++x!=y));// true
System.out.println(x);// 10
int x=8;
int y=9;
System.out.println( (++x!=y)&&(++x==y));// false
System.out.println(x);// 9
变更为或||运算符,再演示一下,看下处理
扩展: // 位运算 & 11为1, | 00为0, ^ 同为0异为1
// 先转为二进制,然后按位运算
int x = 2;
int y = 3;
System.out.println(x & y); // 2
System.out.println(x | y); // 3
System.out.println(x ^ y); // 1
// 十进制转二进制口诀:除二取余,然后倒序排列,高位补零
14、条件运算符
也称为三目(三元)运算符
语法:
条件 ? 表达式1 :表达式2;
表达式1或者2的类型必须跟定义变量类型一致
示例:
public static void main(String[] args) {
// 判断是否为偶数
// 创建Scanner对象
Scanner input = new Scanner(System.in);
// 获取系统输入内容
System.out.print("请输入一个数:");
int num = input.nextInt();
// 判断是否为偶数
// boolean flag = (num % 2 == 0) ? true : false;
String str = (num % 2 == 0) ? "偶数" : "奇数";
System.out.println(str);
// 三元运算符
int salary = 6000;
// 如果工资小于6000,加薪500,否则加薪200
int newSalay = salary < 6000 ? salary + 500 : salary + 200;
System.out.println("调薪后工资为:" + newSalay);
}
15、总结
单元运算符包括! ++ --,优先级别高
优先级别最低的是赋值运算符
可以通过()控制表达式的运算顺序,()优先级最高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
算术运算符 > 关系运算符 > 逻辑运算符
经验:为了程序容易理解,尽量不要写过于复杂的表达式,不确定优先级灵活使用小括号