1、目标
掌握标识符和关键字
掌握变量和常量的使用
了解Java中的数据类型
掌握数据类型转换
2、变量
变量:一个数据存储空间的表示
不同数据存入具有不同内存地址的空间,相互独立
已经将数据存入内存,但是: 怎么找到存入的数据?
2.1变量命名规则
①字下美人数:
字:大小写英文字母,a-z、A-Z
下:下划线_
美:美元符号$(通常不用)
人:人民币符号¥(通常不用)
数:数字0-9
变量名通常由字下美人数组成,以字母开头,数字不能作为开头
②骆驼
即驼峰命名法,变量名有多个单词组成时,从第二个起首字母大写,例:className、studentName
③有意义
即能够做到见名识意,通常用相应的英文全拼或缩写表达,例如学生用 stu或student
3、Java常见的数据类型
3.1、数据类型说明
数据类型 | 大小 | 取值范围 |
byte | 1字节8位 | -128 ~ +127 |
int | 4字节32位 | -2147483648(-2^31) ~ + 2147483647(2^31-1) |
short | 2字节16位 | -32768 (-2^15) ~ + 32767 (+2^15-1) |
long | 8字节64位 | -2^63 ~ + 2^63-1 |
float | 4字节32位浮点数 | 1.4E-45 ~ 3.4E+38 , -1.4E-45 ~ -3.4E+38 |
double | 8字节64位浮点数 | 4.9E-324 ~ 1.7E+308, -4.9E-324 ~ -1.7E+308 |
char 字符类型
boolean 布尔类型
单位换算
8位 = 1字节(byte)
1024字节 = 1kb(千字节)
1024kb = 1MB(兆字节)
3.2、变量的声明和使用
第一步、声明变量,根据数据类型在内存申请空间。
第二步、复制,即“将数据存储至对应的内存空间”
第一二步可以合并
第三步:使用变量,即“取出数据使用”
4、常量的使用 final
在程序运行中,常量如何表示:
推荐做法:(1)常量名通常大写(2)不同字符使用下划线分隔(3)只能被赋值一次,通常定义时即对其初始化
优点:比较安全
注意:
在程序运行过程中值不可以改变
常量一般名字使用全大写
5、Scanner的使用
使用Scanner
第一步导入Scanner类
import java.util.*;
第二步、创建Scanner对象
Scanner input = new Scanner(System.in);
第三步、获得键盘输入的数据。
int now = input.nextint();
6、自动类型转换
规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件
两种类型要兼容
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型
小转大
强制类型转换规则
7、赋值运算符
如何借助变量以及赋值运算符实现两个数据的交换?
int num1=8;
int num2=9;
1、借助中间变量
int temp;
temp = num1;
num1 = num2;
num2 = temp;
2、使用^位移运算交换
操作符 | 描述 | 例子 |
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
a = 60 二进制为00111100
b = 13 二进制为00001101
则 a^b = 00110001
这里可以使用
a = a^b
b = a^b
a = a^b
这里 第一个之后的值为 b = a^b^b a = a^b^a
b^b = 0 a^0 = a b = a同理 a=b
3、数值相加减交换
a = a+b
b = a-b
a = a-b
原理:通过先求得两数的和再进行减运算从而互换。
8、运算符
8.1关系运算符
运算符 | 含义 | 范例 | 结果 |
== | 等于 | 5==6 | false |
!= | 不等于 | 5!=6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于等于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | true |
=为赋值运算符,==为等于运算符关系表达式的结果为布尔值>、<、>=、<= 运算符的优先级别高于==、!=>、<、>=、<=运算符只支持数值类型的数据比较(返回boolean类型)
8.2逻辑运算符
运算符 | 含义 | 运算规则 |
&& | 短路与 | 两个操作数都是true,结果才是true |
|| | 短路或 | 两个操作数一个是true,结果就是true |
! | 非 | 操作数为true,结果为false |
操作数为false,结果为true |
如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;优先级别 ! > && > ||
短路与 短路或,当前面条件已经能判断该语句是否为true和false时,后面的语句将不会执行判断。
8.3条件运算符
int min;min = 5 < 7 ? 5 : 7;System.out.println(min);min = 10 < 7 ? 10 : 7;System.out.println(min);
8.4运算符优先级
单目运算符包括! ++ --,优先级别高
优先级别最低的是赋值运算符
可以通过()控制表达式的运算顺序,()优先级最高
从右向左结合性的只有赋值运算符、三目运算符和单目运算符
算术运算符 > 关系运算符 > 逻辑运算符
9、java内存
java的内存分为堆和栈
栈: 一般存储基本数据类型
堆: 一般存储引用数据类型
10、练习
练习一、使用变量完成如下操作输出Java课考试最高分:98.5输出最高分学员姓名:张三输出最高分学员性别:男
代码:
package demo1;
publicclass student {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
doublescore;
String name;
String sex;
score = 98.5;
name = "张三";
sex = "男";
System.out.print("输出Java课考试最高分:" +score + "\n" + "输出最高分学员姓名:" + name +"\n" + "输出最高分学员性别:" + sex);
}
}
练习二、输出个人日历
代码:
package demo1;
publicclass Calendar {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
String name;
intage;
intworkyear;
intworkdemo;
String tchnical;
String hobby;
name = "小明";
age = 25;
workyear = 3;
workdemo = 5;
tchnical = "java";
hobby = "篮球";
System.out.println("这个同学的姓名是:" + name);
System.out.println("年龄是:" + age);
System.out.println("工作了:" + workyear + "年");
System.out.println("做过:" + workdemo + "个项目");
System.out.println("技术方向是:" + tchnical);
System.out.println("兴趣爱好是:" + hobby);
}
}
练习三、输入并显示会员卡号
代码:
package demo1;
import java.util.*;
publicclass VipNumber {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
intvipnumber;
Scanner sc = new Scanner(System.in);
System.out.println("请输入4位会员卡号");
vipnumber = sc.nextInt();
System.out.println("会员卡号是:" + vipnumber);
}
}
练习四、求四位会员部卡号之和
代码:
package demo1;
import java.util.Scanner;
publicclass vipadd {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
intvipnumber;
Scanner sc = new Scanner(System.in);
System.out.println("请输入4位会员卡号");
vipnumber = sc.nextInt();
System.out.println("会员卡号是:" + vipnumber);
inta = vipnumber /1000;
intb = vipnumber%1000/100;
intc = vipnumber%100/10;
intd = vipnumber%10;
intnum = a+b+c+d;
System.out.println("会员卡号:" + vipnumber + "各位之和是" +num );
}
}
练习五、判断是否中奖
package demo1;
import java.util.Scanner;
publicclass award {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
intvipnumber;
Scanner sc = new Scanner(System.in);
System.out.println("请输入4位会员卡号");
vipnumber = sc.nextInt();
System.out.println("会员卡号是:" + vipnumber);
inta = vipnumber /1000;
intb = vipnumber%1000/100;
intc = vipnumber%100/10;
intd = vipnumber%10;
intnum = a+b+c+d;
System.out.println("会员卡号:" + vipnumber + "各位之和是" +num);
String info = num > 20 ? "你中奖了!!奖品是mp3": "你没中奖";
System.out.println(info);
}
}
10、作业
1.手动输入一个学生的成绩,对这个成绩进行一次加分,
加当前成绩的20%,输出加分后成绩
2.商场举行店庆,抽几折打几折,
先手动输入消费金额,再输入,抽到的折扣,计算出折后价格
(折扣输入0~1)
3.商场消费返利活动,手动输入顾客消费金额,
如果金额打8折后仍然满1000元,用户就获得200元代金券一张(不考虑多张)
作业一、给学生成绩加分
package homework;
import java.util.*;
publicclass addsco {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
doublescore;
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
score = sc.nextDouble();
score *= 1.2;
System.out.println("加分后成绩为" + score);
}
}
作业二、抽几折打几折
package homework;
import java.util.*;
publicclass discount {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
doublespentm;
doublediscount;
doublefin;
Scanner sc = new Scanner(System.in);
System.out.println("请输入消费金额");
spentm = sc.nextDouble();
System.out.println("请输入折扣");
discount = sc.nextDouble();
fin = spentm*discount;
System.out.println("您最终消费:" + fin);
// String result = discount > 1 ? "折扣只能在0-1":discount<0? "折扣只能在0-1":"您最终消费:" + fin;
}
}
作业三、满多少打折
package homework;
import java.util.Scanner;
publicclass discount2 {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
doublespentm;
doublediscount=0.8;
doublefin;
Scanner sc = new Scanner(System.in);
System.out.println("请输入消费金额");
spentm = sc.nextDouble();
// System.out.println("请输入折扣");
// discount = sc.nextDouble();
fin = spentm*discount;
String result = fin > 1000 ? "折扣后满1000元 得到200元代金券":"折扣后未满1000元";
System.out.println(result);
}
}