1.回顾
2.算术运算符
3.赋值运算符
4.比较运算符(关系运算符)
5.逻辑运算符
6.位运算符
7.三元运算符
回顾
1.软件:系统软件 vs 应用软件
2.人与计算机做交互:使用计算机语言
图形化界面 vs 命令行方式dir md rd cd cd.. cd / del exit
3.语言的分类:第一代:机器语言 第二代:汇编语言第三代:高级语言(面向对象)
4.Java语言的特性(1)面向对象性 (2)健壮性 (3)跨平台性
5.安装jdk和配置path环境变量
(1)傻瓜式安装jdk
(2)path:window操作系统在执行时所需要的搜寻路径
我们需要将jdk中bin目录所在的路径:
(3)测试:在命令行窗口中。任意文件夹下面输入javac
6.如何编写第一个java程序
【过程】编写---编译---运行
(1)编写:每一个java文件都是.java结尾的,称为源文件【HelloWorld.java】java程序就存在于源文件中
public class HelloWorld{
//程序的主方法,是程序的入口
public static void main(String args[]){
System.out.println(“helloworld”);
}
}
1.源文件以.java结尾
2.源文件中可以有多个class声明的类
3.类中可以有主方法(即main()方法),其格式是固定的:public static void main(String[] args){}
4.main()方法是程序的入口,方法内是程序的执行部分。
5.一个源文件中只能有一个声明为public的类,同时要求此类的类名与源文件名一致。
6.每个语句都以";"结束
7.执行程序:①编译:javac.exe 编译完,生成诸多个.class字节码文件。②运行:java.exe
8.多行注释不能够嵌套
(2)编译:在源文件所在的目录下,执行javac.exe 源文件名.java 他会生成.class字节码形式
(3)运行:生成的字节码文件通过java.exe 解析执行
7.关键字:被java语言赋予了特殊含义,用做专门用途的字符串(单词)
8.保留字:
9.标识符:凡是自己可以起名字的地方都叫标识符
10.命名规则:(一定要遵守,不遵守就会报编译错误)
11.Java中变量安装数据类型来分类:基本数据类型 vs引用数据类型
基本数据类型:
整形:byte(8 bit) short int(默认类型) long
浮点型:float double(默认类型)
字符型:char(‘ ’)
布尔类型:boolean(只能取值true或false,不能取null)
12.进制(了解)
十进制 二进制八进制 十六进制
二进制:计算机底层都是用二进制来存储,运算的
>二进制与十进制的转换
>二进制在底层存储:正数,负数都是以补码形式存储的(源码,反码,补码)
>四中进制转换
13.变量的运算:
(1)自动类型转换:容量小的数据类型自动转换成容量大的数据类型
short s =12;
Int i =s +2
注意:byte short char 之间做运算,结果都为int型
强制类型转换:是(1)的反过程
赋值运算符
符号: =
(1)当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
(2)支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
思考1: short s = 3;
s=s+2; ①
s+=2; ②
①和②有什么区别?
思考2:
boolean b1 = false;
//区分好==和=的区别。
if(b1=true)
System.out.println("结果为真");
else
System.out.println("结果为假");
思考3:
int i = 1;
i *= 0.1;
System.out.println(i);//
i++;
System.out.println(i);//
案例:
//赋值运算符:= += -= *= /= %=
class GetValue{
public static void main(String[] args) {
int i1 = 10;
i1 += 3;//i1 = i1 + 3;
short s = 10;
//s = s + 3;编译不通过
s = (short)(s + 1);//不建议如此实现
s += 1;//既可以实现运算,又不会更改s的数据类型。
int i2 = 12;
i2 %= 5;//i2 = i2 % 5;
System.out.println(i1);
System.out.println(s);
System.out.println(i2);//2
boolean b1 = false;
//区分好==和=的区别。
if(b1=true)
System.out.println("结果为真");
else
System.out.println("结果为假");
int i = 1;
i *= 0.1;
System.out.println(i);//0
}
}
比较运算符
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=”。
逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6。
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
案例:
//逻辑运算符: & && | || ! ^
class TestLogic{
public static void main(String[] args){
boolean a = true;
boolean b = false;
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);
System.out.println(a^b);
//& 与 &&的区别:&:不管左边是true还是false,右端都会进行运算。
// &&:当左端为false时,右端不再进行运算
//以后使用时,建议使用 &&
int i1 = 10;
if(b & (i1++) > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i1);//11
int i2 = 10;
if(b && (i2++) > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i2);//10
//| 与 ||的区别:|:当左端为true时,右端照样做运算。
// ||:当左端为true时,右端不再进行运算。
//我们在使用时,选择:||
int i3 = 10;
if(a | i3++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i3);//11
int i4 = 10;
if(a || i4++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i4);//10
}
}
练习题:
位运算符
位运算是直接对二进制进行运算
//位运算符:<< >> >>> | & ~ ^
class TestBit{
public static void main(String[] args){
int i1 = 31;
System.out.println(i1<<3);//248
System.out.println(i1<<28);
System.out.println(i1>>2);//7
System.out.println(i1>>>2);//7
int i2 = -31;
System.out.println(i2>>2);//-8
System.out.println(i2>>>2);//1073741816
System.out.println(12 & 5);//4
System.out.println(12 | 5);//13
System.out.println(12 ^ 5);//9
System.out.println(~12);//-13
}
}
class TestExer1{
public static void main(String[] args){
int m = 12;
int n = 5;
System.out.println("m:" + m + " n:" + n);
//方法一:提供一个临时变量。
//int temp = m;
// m = n;
// n = temp;
//System.out.println("m:" + m + " n:" + n);
//方法二:当m和n较大时,有可能出现精度损失
//m = m + n;//m = 12 + 5;
//n = m - n;//n = 17 - 5;
//m = m - n;//m = 17- 12
//System.out.println("m:" + m + " n:" + n);
//方法三:优点:没有上面两种方法的缺点。 缺点:难!
m = m ^ n;
n = m ^ n;//(m ^ n) ^ n == m
m = m ^ n;//(m ^ n) ^ m == n
System.out.println("m:" + m + " n:" + n);
//问题:
//60 手动的方式,从控制台输出60的十六进制。
int i = 61;
//自动调用Integer类现成的方法
String binary = Integer.toBinaryString(i);
System.out.println(binary);
String hex = Integer.toHexString(i);
System.out.println(hex);
/*
char c = 'a';
char c1 = (char)(c + 2);
System.out.println(c1);//c
*/
int j = i & 15;//获取到i的最低4位对应的值。
String k1 = (j <= 9)? j + "" : (char)(j - 10 +'a') + "";
//System.out.println(k1);
i = i >> 4;
int z = i & 15;
String k2 = (z <= 9)? z + "" : (char)(z - 10 +'a') + "";
System.out.println(k2 + k1);
}
}
三元运算符
表达式1和表达式2为同种类型
三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句
练习: 获取两个数中的较大数
获取三个数中的较大数
/*
三元运算符:(条件表达式)? 表达式1 :表达式2;
要求:表达式1与表达式2为同种数据类型。
既然是运算符,就一定会有运算的结果,结果的数据类型与表达式1,2的类型一致。
三元运算符在一定程度上可以与if-else互换。(三元运算符一定可以转换为if-else,反之不成立。)
*/
案例:
class TestSanYuan{
public static void main(String[] args){
int i = 10;
int j = 20;
//此时max记录了i与j的较大值
int max = (i > j)? i : j;
//String str = (i > j)? "i大" : "j大";
String str = (i > j)? "i大" : (i == j)?"相等" :"j大";
//String str1 = (i > j)? i : "j大";
System.out.println(max);
System.out.println(str);
//互换
if(i >= j){
System.out.println("较大值为:" + i);
}else{
System.out.println("较大值为:" + j);
}
//练习:如何使用三元运算符,输出三个数中的较大值。
int m = 12;
int n = 23;
int k = -9;
int max1 = (m > n)? m : n;
int max2 = (max1 > k)? max1 : k;
System.out.println(max2);
}
}
程序流程控制
案例:
/*
1.格式:三种
2.执行if-else语句时,一定会选择其中的一个路径执行,而且也仅会选择一条路径。
*/
class TestIf1 {
public static void main(String[] args){
int age = 28;
if(age > 18){
System.out.println("你已经成年了!");
}else{
System.out.println("你还不能看成人电影!");
}
if(age > 130 || age < 0){
System.out.println("你估计不是人");
}else if(age < 30){
System.out.println("人家还很年轻,只有" + age +"岁的啦~~么么");
}else{
System.out.println("别追我了,我都有两个娃了!");
}
if(age < 30){
//1.
}else if(age < 60){
//2.
}else if(age < 100){
//3.
}else{
//4.
}
}
}
怎么获取键盘输入:
//1.导包
import java.util.Scanner;
class TestScanner{
public static void main(String[] args){
//2.创建一个Scanner类的对象
Scanner s = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//3.调用此对象的相应的方法,完成键盘输入的值的获取
//next():表示从键盘获取一个字符串
String str = s.next();
System.out.println(str);
}
}
案例:if语句例题1
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。
/*
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[60,80]时,奖励一本参考书;
其它时,什么奖励也没有。
1.条件判断之间可以嵌套
2. ①如果多个条件之间是“互斥”关系,多个条件语句上下顺序是*的。
②如果多个条件之间存在“包含”关系,要求范围小的写在范围大的上面。
*/
import java.util.Scanner;
class TestIf2{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入小明的期末成绩:(分)");
int score = s.nextInt();
if(score >100 || score < 0){
System.out.println("你输入的数值有误!");
}else{
if(score == 100){
System.out.println("奖励一辆BMW");//be my wife! MSN!
}else if(score > 80){
System.out.println("奖励一个台iphone5s");
}else if(score >= 60){
System.out.println("奖励一本参考书");
}else{
System.out.println("什么也没有");
}
}
}
}
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用if-else if-else),并且从小到大输出。
/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用if-else if-else),并且从小到大输出。
说明:如果if-else if-else条件的执行语句块{}只有一条语句的话,那么这一对{}可以省略
建议:不要省略{}
*/
import java.util.Scanner;
class TestIf3{
public static void main(String[] args) {
//1.从键盘获取三个整数
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = s.nextInt();
System.out.println("请输入第二个整数:");
int num2 = s.nextInt();
System.out.println("请输入第三个整数:");
int num3 = s.nextInt();
//2.对num1,num2,num3从小到大排序
System.out.println("从小到大的排序为:");
if(num1 > num2){
if(num3 > num1)
System.out.println(num2 + "," + num1 +"," + num3);
//System.out.println("helloworld");
else if(num3 < num2)
System.out.println(num3 + "," + num2 +"," + num1);
else
System.out.println(num2 + "," + num3 +"," + num1);
}else{
if(num3 > num2)
System.out.println(num1 + "," + num2 +"," + num3);
else if(num3 < num1)
System.out.println(num3 + "," + num1 +"," + num2);
else
System.out.println(num1 + "," + num3 +"," + num2);
}
}
}
案例4.去掉{}
class TestIf4
{
public static void main(String[] args)
{
int x = 4;
int y = 1;
if (x > 2) {
if (y > 2)
System.out.println(x + y);
System.out.println("it18zhang");
} else
System.out.println("x is " + x);
}
}