黑马java代码01-03.docx

01_关键字

 1 /*
 2     关键字:被java语言赋予特定含义的单词。
 3     
 4     特点:组成关键字单词的字母全部小写。
 5     
 6     注意:
 7         A:goto和const是保留字
 8         B:类似于Notepad++这样的高级记事本,针对关键字都有特殊的颜色标记。
 9 */
10 class KeyWordDemo {
11     public static void main(String[] args) {
12         System.out.println("HelloWorld");
13     }
14 }
View Code

 02_标识符

 1 /*
 2     标识符:就是给类,接口,方法,变量等起名字。
 3     
 4     组成规则:
 5         A:英文字母大小写
 6         B:数字字符
 7         C:$和_
 8         
 9     注意事项:
10         A:不能以数字开头
11         B:不能是Java中的关键字
12         C:Java语言严格区分大小写
13         
14     常见的命名规则:见名知意
15         举例:我要定义一个学生类
16             class Student {}
17             class S{}
18             
19         包:其实就是文件夹,用于把相同的类名进行区分
20             全部小写
21         
22             单级:liuyi
23             多级:cn.itcast
24                 cn
25                     itcast
26                     
27         类或者接口:
28             一个单词:单词的首字母必须大写
29                 举例:Student,Dog
30             多个单词:每个单词的首字母必须大写
31                 举例:HelloWorld,StudentName
32             
33         方法或者变量:
34             一个单词:单词的首字母小写
35                 举例:main,age
36             多个单词:从第二个单词开始,每个单词的首字母大写
37                 举例:studentAge,showAllNames()
38                 
39         常量:
40             一个单词:全部大写
41                 举例:PI
42             多个单词:每个字母都大写,用_隔开
43                 举例:STUDENT_MAX_AGE
44         
45 */
46 class MakeNameDemo {
47     public static void main(String[] args) {
48         //正确做法
49         int x = 100;
50         
51         //不能以数字开头
52         //int 1y = 100;
53         int y1 = 100;
54         
55         //不能是Java中的关键字
56         //int public = 100;
57         int Public = 100;
58     }
59 }
View Code

03_注释

 1 /*
 2     需求:我准备写一个java程序,把"HelloWorld"这句话输出在控制台
 3     
 4     分析:
 5         A:要写一个Java程序,必须定义类
 6         B:把数据能够输出,说明我们的程序是可以独立运行的,而程序要独立运行,必须定义main方法
 7         C:把数据输出在控制台,必须使用输出语句
 8         
 9     实现:
10         A:java语言提供了一个关键字:class用来定义类,后面跟的是类名
11         B:main方法的格式是固定的:
12             public static void main(String[] args) {
13             
14             }
15         C:输出语句的格式是固定的:
16             System.out.println("HelloWorld");
17             "HelloWorld"这个内容是可以改变的
18 */
19 
20 //这是我的HelloWorld案例
21 class HelloWorld {
22     /*
23         为了程序能够独立运行,定义main方法
24         main方法是程序的入口
25         被jvm自动调用
26     */
27     public static void main(String[] args) {
28         //为了把数据显示在控制台,我们就使用了输出语句
29         System.out.println("HelloWorld");
30     }
31 }
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 /*
42     注释:用于解释说明程序的文字
43     
44     Java中注释的分类及格式
45         单行注释://
46         多行注释:/星 星/
47             注意:多行不可以嵌套使用,而单行是可以的
48         文档注释:被javadoc工具解析生成一个说明书,面向对象部分讲解。
49 */
50 
51 //这是我的注释案例
52 class ZhuShiDemo {
53     //main方法是主方法
54     //是程序的入口
55     //被jvm调用
56     public static void main(String[] args) {
57         System.out.println("好好学习,天天向上");
58     }
59 }
60 
61 
62 /*
63     注释的作用:
64         A:解释说明程序,提高程序的阅读性
65         B:可以帮助我们调试程序。
66             后面我们会讲解更高级的调试。
67 */
68 class ZhuShiDemo2 {
69     public static void main(String[] args) {
70         System.out.println("林青霞");
71         System.out.println("王祖贤");
72         System.out.println("刘亦菲");
73         System.out.println("范冰冰");
74     }
75 }
View Code

04_常量和进制问题

 1 /*
 2     常量:
 3         在程序执行过程中,其值不发生改变的量。
 4         
 5     分类:
 6         A:字面值常量
 7         B:自定义常量(后面讲)
 8         
 9     字面值常量
10         A:字符串常量    用双引号括起来的内容。
11             举例:"hello","world","HelloWorld"
12         B:整数常量    所有的整数
13             举例:100,200
14         C:小数常量    所有的小数
15             举例:10.23,110.11
16         D:字符常量    用单引号括起来的内容
17             举例:'a','A','0'
18             错误的:'ab'
19         E:布尔常量    比较特殊
20             举例:true,false
21         F:空常量    后面讲
22             举例:null
23 */
24 class ConstantDemo {
25     public static void main(String[] args) {
26         //字符串常量的输出
27         System.out.println("hello");
28         
29         //整数常量的输出
30         System.out.println(100);
31         
32         //小数常量的输出
33         System.out.println(100.10);
34         
35         //字符常量的输出
36         System.out.println('a');
37         System.out.println('A');
38         System.out.println('0');
39         //这个是有问题的
40         //System.out.println('ab');
41         
42         //布尔常量的输出
43         System.out.println(true);
44         System.out.println(false);
45     }
46 }
47 
48 /*
49     不同进制的数据表现:
50         二进制:由0,1组成。以0b开头。
51         八进制:由0,1,...7组成。以0开头。
52         十进制:由0,1,...9组成。默认整数是十进制。
53         十六进制:由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
54 */
55 class JinZhiDemo {
56     public static void main(String[] args) {
57         System.out.println(100); //十进制
58         
59         System.out.println(0b100); //二进制
60         System.out.println(0100); //八进制
61         System.out.println(0x100); //十六进制
62     }
63 }
View Code

05_变量和数据类型

  1 /*
  2     数据类型:Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。
  3     
  4     数据类型分类:
  5         A:基本数据类型
  6         B:引用数据类型(类,接口,数值)
  7         
  8     基本数据类型:4类8种
  9         A:整数            占用字节数
 10             byte            1
 11             short            2
 12             int                4
 13             long            8
 14             
 15         B:浮点数
 16             float             4
 17             double             8
 18             
 19         C:字符
 20             char            2
 21         D:布尔
 22             boolean            1
 23         
 24         注意:
 25             整数默认是int类型
 26             浮点数默认是double类型。
 27             
 28             长整型后缀用L或者l标记。建议使用L。
 29             单精度浮点数用F或者f标记。建议使用F。
 30 */
 31 class DataTypeDemo {
 32     public static void main(String[] args) {
 33         //定义变量的格式:
 34         //数据类型 变量名 = 初始化值;
 35         
 36         //定义一个字节变量
 37         byte b = 10;
 38         System.out.println(10);
 39         System.out.println(b);
 40         
 41         //定义一个短整型变量
 42         short s = 100;
 43         System.out.println(s);
 44         
 45         //定义一个整型变量
 46         int i = 1000;
 47         System.out.println(i);
 48         
 49         //超过了int的范围
 50         //int j = 1000000000000;
 51         long j = 1000000000000L;
 52         //long j = 100L;
 53         System.out.println(j);
 54         
 55         //定义浮点数据变量
 56         float f = 12.345F;
 57         System.out.println(f);
 58         
 59         double d = 12.345;
 60         System.out.println(d);
 61         
 62         //定义字符变量
 63         char ch = 'a';
 64         System.out.println(ch);
 65         
 66         //定义布尔变量
 67         boolean flag = true;
 68         System.out.println(flag);
 69     }
 70 }
 71 
 72 /*
 73     使用变量的时候要注意的问题:
 74         A:作用域
 75             变量定义在哪个大括号内,它就在这个大括号内有效。
 76             并且,在同一个大括号内不能同时定义同名的变量。
 77             
 78         B:初始化值
 79             没有初始化值的变量不能直接使用。
 80             你只要在使用前给值就行,不一定非要在定义的时候立即给值。
 81             推荐在定义的时候给值。
 82             
 83             定义变量的格式:
 84                 a:数据类型 变量名 = 初始化值;
 85                 b:数据类型 变量名;
 86                   变量名 = 初始化值;
 87         
 88         C:在一行上建议只定义一个变量
 89             可以定义多个,但是不建议
 90 */
 91 class DataTypeDemo2 {
 92     public static void main(String[] args) {
 93         //定义变量
 94         int x = 100;
 95         
 96         //错误,不能有同名的
 97         //int x = 200;
 98         
 99         //定义变量必须给值
100         //int y;
101         //System.out.println(y);
102         
103         int z;
104         z = 100;
105         System.out.println(z);
106         
107         //在一行上定义多个变量
108         //int a = 10; int b = 20; int c  = 30;
109         //上面的写法可以,但是不建议。
110         int a = 10; 
111         int b = 20; 
112         int c  = 30;
113         
114         //int d, e;
115         //d = 40;
116         //e = 50;
117         
118         //int f,int g; //错误
119         //int h; int i; //正确
120     }
121 }
122 
123 /*
124     +是一个运算符(我们等会讲解)。做加法运算的。
125     
126     一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。
127     
128     注意:
129         boolean类型不能转换为其他的数据类型
130 
131     默认转换(从小到大的转换)
132         A:byte,short,char—int—long—float—double
133         B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
134 */
135 class DataTypeDemo3 {
136     public static void main(String[] args) {
137         //直接输出的方式做加法
138         //System.out.println(3 + 4);
139     
140         //两个int类型做加法
141         int x = 3;
142         int y = 4;
143         int z = x + y;
144         System.out.println(z);
145         
146         //定义一个byte类型,一个int类型,做加法
147         byte a = 3;
148         int b = 4;
149         System.out.println(a + b);
150         
151         //可能损失精度
152         //byte c =  a + b;
153         int c = a + b;
154         System.out.println(c);
155     }
156 }
157 
158 /*
159     强制转换:
160         从大的数据类型到小的数据类型。
161         
162         格式:
163             目标数据类型 变量 = (目标数据类型) (被转换的数据);
164             
165         注意:
166             不要随意的去使用强制转换,因为它隐含了精度损失问题。
167 */
168 class DataTypeDemo4 {
169     public static void main(String[] args) {
170         byte a = 3;
171         int b = 4;
172         
173         //这个肯定没有问题
174         //int c = a + b;
175         
176         //byte c = 7;
177         //这个是有问题的
178         //byte c = a + b; 
179         //用强制类型转换改进
180         byte c = (byte) (a + b);
181         System.out.println(c);
182     }
183 }
184 
185 /*
186     思考题1:请问下面这个有没有问题
187         double d = 12.345;
188         float f = d;
189         
190     思考题2:看看下面两个定义有没有区别呢?
191         float f1 = (float)12.345;
192         float f2 = 12.345f;
193         
194         f1其实是通过一个double类型转换过来的。
195         而f2本身就是一个float类型。
196 */
197 class DataTypeDemo5 {
198     public static void main(String[] args) {
199         //把double赋值给float,加了强制类型转换
200         double d = 12.345;
201         float f = (float)d;
202         
203         //看看下面两个定义有没有区别呢?
204         float f1 = (float)12.345;
205         float f2 = 12.345F;
206     }
207 }
208 
209 /*
210     面试题:
211         byte b1=3,b2=4,b;
212         b=b1+b2;
213         b=3+4;
214         哪句是编译失败的呢?为什么呢?
215         b = b1 + b2;是有问题的。
216         因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
217         常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
218 */
219 class DataTypeDemo6 {
220     public static void main(String[] args) {
221         //定义了三个byte类型的变量,b1,b2,b3
222         //b1的值是3,b2的值是4,b没有值
223         byte b1 = 3,b2 = 4,b;
224         
225         //b = b1 + b2; //这个是类型提升,所有有问题
226         
227         b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
228     }
229 }
230 
231 
232 /*
233     byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
234     
235     练习:byte b = (byte)300;
236 */
237 class DataTypeDemo7 {
238     public static void main(String[] args) {
239         //因为byte的范围是:-128到127。
240         //而130不在此范围内,所以报错。
241         //byte b = 130; 
242         
243         //我们可以使用强制类型转换
244         byte b = (byte) 130;
245         
246         //结果是多少呢?
247         System.out.println(b);
248     }
249 }
250 /*
251     分析过程:
252         我们要想知道结果是什么,就应该知道是如何进行计算的。
253         而我们又知道计算机中数据的运算都是补码进行的。
254         而要得到补码,首先要计算出数据的二进制。
255         
256         A:获取130这个数据的二进制。
257             00000000 00000000 00000000 10000010
258             这是130的原码,也是反码,还是补码。
259         B:做截取操作,截成byte类型的了。
260             10000010 
261             这个结果是补码。
262         C:已知补码求原码。
263                     符号位        数值位
264             补码:    1            0000010
265             
266             反码:    1            0000001
267             
268             原码:    1            1111110
269 */
270 
271 /*
272     看程序写结果
273     
274     通过字符和一个整数相加,我们给出一张表:ASCII码表。
275         通过看完这张表以后,我们要记住三个值:
276             'a'        97
277             'A'        65
278             '0'        48
279 */
280 class DataTypeDemo8 {
281     public static void main(String[] args) {
282         //直接输出一个字符
283         System.out.println('a'); //a
284         //输出一个字符和一个整数做加法
285         System.out.println('a'+1); //98
286     }
287 }
288 
289 /*
290     看程序写结果
291         字符串数据和其他数据做+,结果是字符串类型。
292         这里的+不是加法运算,而是字符串连接符。
293 */
294 class DataTypeDemo9 {
295     public static void main(String[] args) {
296         System.out.println("hello"+'a'+1); //helloa1
297         System.out.println('a'+1+"hello"); //98hello
298         
299         System.out.println("5+5="+5+5); //5+5=55
300         System.out.println(5+5+"=5+5"); //10=5+5
301     }
302 }
View Code

小结:

  1 1:关键字(掌握)
  2     (1)被Java语言赋予特定含义的单词
  3     (2)特点:
  4         全部小写。
  5     (3)注意事项:
  6         A:goto和const作为保留字存在。
  7         B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
  8 
  9 2:标识符(掌握)
 10     (1)就是给类,接口,方法,变量等起名字的字符序列
 11     (2)组成规则:
 12         A:英文大小写字母
 13         B:数字
 14         C:$和_
 15     (3)注意事项:
 16         A:不能以数字开头
 17         B:不能是java中的关键字
 18         C:区分大小写
 19     (4)常见的命名规则(见名知意)
 20         A:包    全部小写
 21             单级包:小写
 22                 举例:liuyi,com
 23             多级包:小写,并用.隔开
 24                 举例:cn.itcast,com.baidu                
 25         B:类或者接口
 26             一个单词:首字母大写
 27                 举例:Student,Demo
 28             多个单词:每个单词首字母大写
 29                 举例:HelloWorld,StudentName
 30         C:方法或者变量
 31             一个单词:首字母小写
 32                 举例:name,main
 33             多个单词:从第二个单词开始,每个单词首字母大写
 34                 举例:studentAge,showAllNames()
 35         D:常量
 36             全部大写
 37             一个单词:大写
 38                 举例:PI
 39             多个单词:大写,并用_隔开
 40                 举例:STUDENT_MAX_AGE
 41 
 42 3:注释(掌握)
 43     (1)就是对程序进行解释说明的文字
 44     (2)分类:
 45         A:单行注释    //
 46         B:多行注释    /**/
 47         C:文档注释(后面讲) /** */
 48     (3)把HelloWorld案例写了一个带注释的版本。
 49         后面我们要写一个程序的过程。
 50         需求:
 51         分析:
 52         实现:
 53         代码体现:
 54     (4)注释的作用
 55         A:解释说明程序,提高了代码的阅读性。
 56         B:可以帮助我们调试程序。
 57             后面我们会讲解一个更高端的一个调试工具
 58 
 59 4:常量(掌握)
 60     (1)在程序执行的过程中,其值不发生改变的量
 61     (2)分类:
 62         A:字面值常量
 63         B:自定义常量(后面讲)
 64     (3)字面值常量
 65         A:字符串常量 "hello"
 66         B:整数常量    12,23
 67         C:小数常量    12.345
 68         D:字符常量    'a','A','0'
 69         E:布尔常量    true,false
 70         F:空常量    null(后面讲)
 71     (4)在Java中针对整数常量提供了四种表现形式
 72         A:二进制    由0,1组成。以0b开头。
 73         B:八进制    由0,1,...7组成。以0开头。
 74         C:十进制    由0,1,...9组成。整数默认是十进制。
 75         D:十六进制    由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
 76 
 77 5:进制转换(了解)
 78     (1)其他进制到十进制
 79         系数:就是每一个位上的数值
 80         基数:x进制的基数就是x
 81         权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
 82         
 83         结果:系数*基数^权次幂之和。
 84     (2)十进制到其他进制
 85         除基取余,直到商为0,余数反转。
 86     (3)进制转换的快速转换法
 87         A:十进制和二进制间的转换
 88             8421码。
 89         B:二进制到八进制,十六进制的转换
 90 
 91 6:变量(掌握)
 92     (1)在程序的执行过程中,其值在某个范围内可以发生改变的量
 93     (2)变量的定义格式:
 94         A:数据类型 变量名 = 初始化值;
 95         B:数据类型 变量名;
 96           变量名 = 初始化值;
 97 
 98 7:数据类型(掌握)
 99     (1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
100     (2)分类:
101         A:基本数据类型:4类8种
102         B:引用数据类型:类,接口,数组。
103     (3)基本数据类型
104         A:整数            占用字节数
105             byte            1
106             short            2
107             int             4
108             long            8
109         B:浮点数
110             float            4
111             double            8
112         C:字符
113             char            2
114         D:布尔
115             boolean            1
116             
117         注意:
118             整数默认是int类型,浮点数默认是double。
119             
120             长整数要加L或者l。
121             单精度的浮点数要加F或者f。
122 
123 8:数据类型转换(掌握)
124     (1)boolean类型不参与转换
125     (2)默认转换
126         A:从小到大
127         B:byte,short,char -- int -- long -- float -- double
128         C:byte,short,char之间不相互转换,直接转成int类型参与运算。
129     (3)强制转换
130         A:从大到小
131         B:可能会有精度的损失,一般不建议这样使用。
132         C:格式:
133             目标数据类型 变量名 = (目标数据类型) (被转换的数据);
134     (4)思考题和面试题:
135         A:下面两种方式有区别吗?
136             float f1 = 12.345f;
137             float f2 = (float)12.345;
138         B:下面的程序有问题吗,如果有,在哪里呢?
139             byte b1 = 3;
140             byte b2 = 4;
141             byte b3 = b1 + b2;
142             byte b4 = 3 + 4;
143         C:下面的操作结果是什么呢?
144             byte b = (byte)130;
145         D:字符参与运算
146             是查找ASCII里面的值
147             'a'        97
148             'A'        65
149             '0'        48
150             
151             System.out.println('a');
152             System.out.println('a' + 1);
153         E:字符串参与运算
154             这里其实是字符串的连接
155             
156             System.out.println("hello"+'a'+1);
157             System.out.println('a'+1+"hello");
158             System.out.println("5+5="+5+5);
159             System.out.println(5+5+"=5+5");
View Code

01_算术运算符

  1 /*
  2     运算符:
  3         就是对常量和变量进行操作的符号。
  4         
  5     分类:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符
  6 
  7     算术运算符:
  8         +,-,*,/,%,++,--
  9         
 10     注意事项:
 11         A:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
 12         B:/获取的是除法操作的商,%获取的是除法操作的余数
 13 */
 14 
 15 class OperatorDemo {
 16     public static void main(String[] args) {
 17         //定义变量
 18         int x = 3;  //把3赋值给int类型的变量x
 19         int y = 4;
 20         
 21         System.out.println(x+y);
 22         System.out.println(x-y);
 23         System.out.println(x*y);
 24         System.out.println(x/y); //整数相除只能得到整数
 25         
 26         //我就想得到小数,该肿么办呢?
 27         //只需要把操作的数据中任意的一个数据变为浮点数
 28         System.out.println(x*1.0/y);
 29         
 30         //%的应用
 31         System.out.println(x%y); //得到的是余数
 32     }
 33 }
 34 
 35 /*
 36     ++,--运算符的使用:
 37         单独使用:
 38             放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
 39         参与运算使用:
 40             放在操作数的前面,先自增或者自减,然后再参与运算。
 41             放在操作数的后面,先参与运算,再自增或者自减。
 42             
 43     作用:就是对变量进行自增1或者自减1。
 44 */
 45 class OperatorDemo2 {
 46         public static void main(String[] args) {
 47             //定义两个变量
 48             int x = 3;
 49             int y = 4;
 50             
 51             //字符串的拼接
 52             //System.out.println("x:"+x);
 53             //System.out.println("y:"+y);
 54             
 55             System.out.println("x:"+x+",y:"+y);
 56             
 57             //单独使用
 58             //x++;
 59             //y--;
 60             ++x;
 61             --y;
 62             //System.out.println(x);
 63             System.out.println("x:"+x+",y:"+y);
 64             
 65             //意外的类型,常量是不可以这样做的
 66             //System.out.println(10++);
 67             
 68             System.out.println("-------------------");
 69             //参与运算使用
 70             int a = 3;
 71             int b = 4;
 72             
 73             //int c = a++;
 74             //int d = b--;
 75             
 76             int c = ++a;
 77             int d = --b;
 78             
 79             System.out.println("a:"+a); //4, 4
 80             System.out.println("b:"+b); //3, 3
 81             System.out.println("c:"+c); //3, 4
 82             System.out.println("d:"+d); //4, 3
 83         }
 84 }
 85 
 86 
 87 /*
 88     +的用法:
 89         A:加法
 90         B:正号
 91         C:字符串连接符
 92 */
 93 class OperatorDemo3 {
 94     public static void main(String[] args) {
 95         //加法
 96         System.out.println(3+4);
 97         
 98         //正号
 99         System.out.println(+4);
100         
101         System.out.println('a');
102         System.out.println('a'+1); //这里是加法
103         
104         //字符串连接符
105         System.out.println("hello"+'a'+1);
106         System.out.println('a'+1+"hello");
107     }
108 }
109 
110 /*
111     ++,--的练习题
112     
113     第一题:
114     int a = 10;
115     int b = 10;
116     int c = 10;
117 
118     a = b++;
119     c = --a;
120     b = ++a;
121     a = c--;
122     请分别计算出a,b,c的值
123     
124     第二题:
125     int x = 4;
126     int y = (x++)+(++x)+(x*10);
127     请分别计算出x,y的值
128 */
129 class OperatorTest {
130     public static void main(String[] args) {
131         int a = 10;
132         int b = 10;
133         int c = 10;
134 
135         a = b++; //a=10,b=11,c=10
136         c = --a; //a=9,b=11,c=9
137         b = ++a; //a=10,b=10,c=9
138         a = c--; //a=9,b=10,c=8
139         
140         System.out.println("a:"+a);
141         System.out.println("b:"+b);
142         System.out.println("c:"+c);
143         System.out.println("--------------");
144         
145         int x = 4;
146         int y = (x++)+(++x)+(x*10);
147         //4+6+60
148         //x=5,6
149         
150         System.out.println("x:"+x);
151         System.out.println("y:"+y);
152     }
153 }
View Code

02_赋值运算符

 1 /*
 2     赋值运算符:
 3         基本的赋值运算符:=
 4             把=右边的数据赋值给左边。
 5             
 6         扩展的赋值运算符:+=,-=,*=,/=,%=
 7             += 把左边和右边做加法,然后赋值给左边。
 8 */
 9 class OperatorDemo {
10     public static void main(String[] args) {
11         //定义一个变量
12         int x = 10;
13         
14         //其他用法
15         int a,b; 
16         a = b = 10;
17         System.out.println(a); 
18         System.out.println(b);
19         System.out.println("-----------");
20 
21         //定义一个变量
22         int y = 10;
23         
24         y += 20;
25         
26         System.out.println(y);
27         
28     }
29 }
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 /*
44     面试题:
45         short s=1;s = s+1; 
46         
47         short s=1;s+=1;
48         上面两个代码有没有问题,如果有,那里有问题。
49         
50         为什么第二个木有问题呢?
51             扩展的赋值运算符其实隐含了一个强制类型转换。
52             
53             s += 1;
54             不是等价于 s = s + 1;
55             而是等价于 s = (s的数据类型)(s + 1);
56 */
57 class OperatorTest {
58     public static void main(String[] args) {
59         //short s = 1;
60         //s = s + 1;
61         //System.out.println(s);
62         
63         short s = 1;
64         s += 1; //好像是 s = s + 1;
65         System.out.println(s);
66     }
67 }
View Code

 03_比较运算符

 1 /*
 2     比较运算符:
 3         ==,!=,>,>=,<,<=
 4         
 5     特点:
 6         无论你的操作是简单还是复杂,结果是boolean类型。
 7         
 8     注意事项:
 9         "=="不能写成"="。
10 */
11 class OperatorDemo {
12     public static void main(String[] args) {
13         int x = 3;
14         int y = 4;
15         int z = 3;
16     
17         System.out.println(x == y);
18         System.out.println(x == z);
19         System.out.println((x+y) == (x+z));
20         System.out.println("------------");
21         
22         System.out.println(x != y);
23         System.out.println(x > y);
24         System.out.println(x >= y);
25         System.out.println(x < y);
26         System.out.println(x <= y);
27         System.out.println("------------");
28         
29         int a = 10;
30         int b = 20;
31         
32         //boolean flag = (a == b);
33         //boolean flag = (a = b); //这个是有问题的,不兼容的类型
34         //System.out.println(flag);
35         
36         int c = (a = b); //把b赋值给a,然后把a留下来
37         System.out.println(c);
38     }
39 }
View Code

04_常量和进制问题

 1 /*
 2     常量:
 3         在程序执行过程中,其值不发生改变的量。
 4         
 5     分类:
 6         A:字面值常量
 7         B:自定义常量(后面讲)
 8         
 9     字面值常量
10         A:字符串常量    用双引号括起来的内容。
11             举例:"hello","world","HelloWorld"
12         B:整数常量    所有的整数
13             举例:100,200
14         C:小数常量    所有的小数
15             举例:10.23,110.11
16         D:字符常量    用单引号括起来的内容
17             举例:'a','A','0'
18             错误的:'ab'
19         E:布尔常量    比较特殊
20             举例:true,false
21         F:空常量    后面讲
22             举例:null
23 */
24 class ConstantDemo {
25     public static void main(String[] args) {
26         //字符串常量的输出
27         System.out.println("hello");
28         
29         //整数常量的输出
30         System.out.println(100);
31         
32         //小数常量的输出
33         System.out.println(100.10);
34         
35         //字符常量的输出
36         System.out.println('a');
37         System.out.println('A');
38         System.out.println('0');
39         //这个是有问题的
40         //System.out.println('ab');
41         
42         //布尔常量的输出
43         System.out.println(true);
44         System.out.println(false);
45     }
46 }
47 
48 /*
49     不同进制的数据表现:
50         二进制:由0,1组成。以0b开头。
51         八进制:由0,1,...7组成。以0开头。
52         十进制:由0,1,...9组成。默认整数是十进制。
53         十六进制:由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
54 */
55 class JinZhiDemo {
56     public static void main(String[] args) {
57         System.out.println(100); //十进制
58         
59         System.out.println(0b100); //二进制
60         System.out.println(0100); //八进制
61         System.out.println(0x100); //十六进制
62     }
63 }
View Code

05_变量和数据类型

  1 /*
  2     数据类型:Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。
  3     
  4     数据类型分类:
  5         A:基本数据类型
  6         B:引用数据类型(类,接口,数值)
  7         
  8     基本数据类型:4类8种
  9         A:整数            占用字节数
 10             byte            1
 11             short            2
 12             int                4
 13             long            8
 14             
 15         B:浮点数
 16             float             4
 17             double             8
 18             
 19         C:字符
 20             char            2
 21         D:布尔
 22             boolean            1
 23         
 24         注意:
 25             整数默认是int类型
 26             浮点数默认是double类型。
 27             
 28             长整型后缀用L或者l标记。建议使用L。
 29             单精度浮点数用F或者f标记。建议使用F。
 30 */
 31 class DataTypeDemo {
 32     public static void main(String[] args) {
 33         //定义变量的格式:
 34         //数据类型 变量名 = 初始化值;
 35         
 36         //定义一个字节变量
 37         byte b = 10;
 38         System.out.println(10);
 39         System.out.println(b);
 40         
 41         //定义一个短整型变量
 42         short s = 100;
 43         System.out.println(s);
 44         
 45         //定义一个整型变量
 46         int i = 1000;
 47         System.out.println(i);
 48         
 49         //超过了int的范围
 50         //int j = 1000000000000;
 51         long j = 1000000000000L;
 52         //long j = 100L;
 53         System.out.println(j);
 54         
 55         //定义浮点数据变量
 56         float f = 12.345F;
 57         System.out.println(f);
 58         
 59         double d = 12.345;
 60         System.out.println(d);
 61         
 62         //定义字符变量
 63         char ch = 'a';
 64         System.out.println(ch);
 65         
 66         //定义布尔变量
 67         boolean flag = true;
 68         System.out.println(flag);
 69     }
 70 }
 71 
 72 /*
 73     使用变量的时候要注意的问题:
 74         A:作用域
 75             变量定义在哪个大括号内,它就在这个大括号内有效。
 76             并且,在同一个大括号内不能同时定义同名的变量。
 77             
 78         B:初始化值
 79             没有初始化值的变量不能直接使用。
 80             你只要在使用前给值就行,不一定非要在定义的时候立即给值。
 81             推荐在定义的时候给值。
 82             
 83             定义变量的格式:
 84                 a:数据类型 变量名 = 初始化值;
 85                 b:数据类型 变量名;
 86                   变量名 = 初始化值;
 87         
 88         C:在一行上建议只定义一个变量
 89             可以定义多个,但是不建议
 90 */
 91 class DataTypeDemo2 {
 92     public static void main(String[] args) {
 93         //定义变量
 94         int x = 100;
 95         
 96         //错误,不能有同名的
 97         //int x = 200;
 98         
 99         //定义变量必须给值
100         //int y;
101         //System.out.println(y);
102         
103         int z;
104         z = 100;
105         System.out.println(z);
106         
107         //在一行上定义多个变量
108         //int a = 10; int b = 20; int c  = 30;
109         //上面的写法可以,但是不建议。
110         int a = 10; 
111         int b = 20; 
112         int c  = 30;
113         
114         //int d, e;
115         //d = 40;
116         //e = 50;
117         
118         //int f,int g; //错误
119         //int h; int i; //正确
120     }
121 }
122 
123 /*
124     +是一个运算符(我们等会讲解)。做加法运算的。
125     
126     一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。
127     
128     注意:
129         boolean类型不能转换为其他的数据类型
130 
131     默认转换(从小到大的转换)
132         A:byte,short,char—int—long—float—double
133         B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
134 */
135 class DataTypeDemo3 {
136     public static void main(String[] args) {
137         //直接输出的方式做加法
138         //System.out.println(3 + 4);
139     
140         //两个int类型做加法
141         int x = 3;
142         int y = 4;
143         int z = x + y;
144         System.out.println(z);
145         
146         //定义一个byte类型,一个int类型,做加法
147         byte a = 3;
148         int b = 4;
149         System.out.println(a + b);
150         
151         //可能损失精度
152         //byte c =  a + b;
153         int c = a + b;
154         System.out.println(c);
155     }
156 }
157 
158 /*
159     强制转换:
160         从大的数据类型到小的数据类型。
161         
162         格式:
163             目标数据类型 变量 = (目标数据类型) (被转换的数据);
164             
165         注意:
166             不要随意的去使用强制转换,因为它隐含了精度损失问题。
167 */
168 class DataTypeDemo4 {
169     public static void main(String[] args) {
170         byte a = 3;
171         int b = 4;
172         
173         //这个肯定没有问题
174         //int c = a + b;
175         
176         //byte c = 7;
177         //这个是有问题的
178         //byte c = a + b; 
179         //用强制类型转换改进
180         byte c = (byte) (a + b);
181         System.out.println(c);
182     }
183 }
184 
185 /*
186     思考题1:请问下面这个有没有问题
187         double d = 12.345;
188         float f = d;
189         
190     思考题2:看看下面两个定义有没有区别呢?
191         float f1 = (float)12.345;
192         float f2 = 12.345f;
193         
194         f1其实是通过一个double类型转换过来的。
195         而f2本身就是一个float类型。
196 */
197 class DataTypeDemo5 {
198     public static void main(String[] args) {
199         //把double赋值给float,加了强制类型转换
200         double d = 12.345;
201         float f = (float)d;
202         
203         //看看下面两个定义有没有区别呢?
204         float f1 = (float)12.345;
205         float f2 = 12.345F;
206     }
207 }
208 
209 /*
210     面试题:
211         byte b1=3,b2=4,b;
212         b=b1+b2;
213         b=3+4;
214         哪句是编译失败的呢?为什么呢?
215         b = b1 + b2;是有问题的。
216         因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
217         常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
218 */
219 class DataTypeDemo6 {
220     public static void main(String[] args) {
221         //定义了三个byte类型的变量,b1,b2,b3
222         //b1的值是3,b2的值是4,b没有值
223         byte b1 = 3,b2 = 4,b;
224         
225         //b = b1 + b2; //这个是类型提升,所有有问题
226         
227         b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
228     }
229 }
230 
231 
232 /*
233     byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
234     
235     练习:byte b = (byte)300;
236 */
237 class DataTypeDemo7 {
238     public static void main(String[] args) {
239         //因为byte的范围是:-128到127。
240         //而130不在此范围内,所以报错。
241         //byte b = 130; 
242         
243         //我们可以使用强制类型转换
244         byte b = (byte) 130;
245         
246         //结果是多少呢?
247         System.out.println(b);
248     }
249 }
250 /*
251     分析过程:
252         我们要想知道结果是什么,就应该知道是如何进行计算的。
253         而我们又知道计算机中数据的运算都是补码进行的。
254         而要得到补码,首先要计算出数据的二进制。
255         
256         A:获取130这个数据的二进制。
257             00000000 00000000 00000000 10000010
258             这是130的原码,也是反码,还是补码。
259         B:做截取操作,截成byte类型的了。
260             10000010 
261             这个结果是补码。
262         C:已知补码求原码。
263                     符号位        数值位
264             补码:    1            0000010
265             
266             反码:    1            0000001
267             
268             原码:    1            1111110
269 */
270 
271 /*
272     看程序写结果
273     
274     通过字符和一个整数相加,我们给出一张表:ASCII码表。
275         通过看完这张表以后,我们要记住三个值:
276             'a'        97
277             'A'        65
278             '0'        48
279 */
280 class DataTypeDemo8 {
281     public static void main(String[] args) {
282         //直接输出一个字符
283         System.out.println('a'); //a
284         //输出一个字符和一个整数做加法
285         System.out.println('a'+1); //98
286     }
287 }
288 
289 /*
290     看程序写结果
291         字符串数据和其他数据做+,结果是字符串类型。
292         这里的+不是加法运算,而是字符串连接符。
293 */
294 class DataTypeDemo9 {
295     public static void main(String[] args) {
296         System.out.println("hello"+'a'+1); //helloa1
297         System.out.println('a'+1+"hello"); //98hello
298         
299         System.out.println("5+5="+5+5); //5+5=55
300         System.out.println(5+5+"=5+5"); //10=5+5
301     }
302 }
View Code

小结:

  1 1:关键字(掌握)
  2     (1)被Java语言赋予特定含义的单词
  3     (2)特点:
  4         全部小写。
  5     (3)注意事项:
  6         A:goto和const作为保留字存在。
  7         B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
  8 
  9 2:标识符(掌握)
 10     (1)就是给类,接口,方法,变量等起名字的字符序列
 11     (2)组成规则:
 12         A:英文大小写字母
 13         B:数字
 14         C:$和_
 15     (3)注意事项:
 16         A:不能以数字开头
 17         B:不能是java中的关键字
 18         C:区分大小写
 19     (4)常见的命名规则(见名知意)
 20         A:包    全部小写
 21             单级包:小写
 22                 举例:liuyi,com
 23             多级包:小写,并用.隔开
 24                 举例:cn.itcast,com.baidu                
 25         B:类或者接口
 26             一个单词:首字母大写
 27                 举例:Student,Demo
 28             多个单词:每个单词首字母大写
 29                 举例:HelloWorld,StudentName
 30         C:方法或者变量
 31             一个单词:首字母小写
 32                 举例:name,main
 33             多个单词:从第二个单词开始,每个单词首字母大写
 34                 举例:studentAge,showAllNames()
 35         D:常量
 36             全部大写
 37             一个单词:大写
 38                 举例:PI
 39             多个单词:大写,并用_隔开
 40                 举例:STUDENT_MAX_AGE
 41 
 42 3:注释(掌握)
 43     (1)就是对程序进行解释说明的文字
 44     (2)分类:
 45         A:单行注释    //
 46         B:多行注释    /**/
 47         C:文档注释(后面讲) /** */
 48     (3)把HelloWorld案例写了一个带注释的版本。
 49         后面我们要写一个程序的过程。
 50         需求:
 51         分析:
 52         实现:
 53         代码体现:
 54     (4)注释的作用
 55         A:解释说明程序,提高了代码的阅读性。
 56         B:可以帮助我们调试程序。
 57             后面我们会讲解一个更高端的一个调试工具
 58 
 59 4:常量(掌握)
 60     (1)在程序执行的过程中,其值不发生改变的量
 61     (2)分类:
 62         A:字面值常量
 63         B:自定义常量(后面讲)
 64     (3)字面值常量
 65         A:字符串常量 "hello"
 66         B:整数常量    12,23
 67         C:小数常量    12.345
 68         D:字符常量    'a','A','0'
 69         E:布尔常量    true,false
 70         F:空常量    null(后面讲)
 71     (4)在Java中针对整数常量提供了四种表现形式
 72         A:二进制    由0,1组成。以0b开头。
 73         B:八进制    由0,1,...7组成。以0开头。
 74         C:十进制    由0,1,...9组成。整数默认是十进制。
 75         D:十六进制    由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
 76 
 77 5:进制转换(了解)
 78     (1)其他进制到十进制
 79         系数:就是每一个位上的数值
 80         基数:x进制的基数就是x
 81         权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
 82         
 83         结果:系数*基数^权次幂之和。
 84     (2)十进制到其他进制
 85         除基取余,直到商为0,余数反转。
 86     (3)进制转换的快速转换法
 87         A:十进制和二进制间的转换
 88             8421码。
 89         B:二进制到八进制,十六进制的转换
 90 
 91 6:变量(掌握)
 92     (1)在程序的执行过程中,其值在某个范围内可以发生改变的量
 93     (2)变量的定义格式:
 94         A:数据类型 变量名 = 初始化值;
 95         B:数据类型 变量名;
 96           变量名 = 初始化值;
 97 
 98 7:数据类型(掌握)
 99     (1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
100     (2)分类:
101         A:基本数据类型:4类8种
102         B:引用数据类型:类,接口,数组。
103     (3)基本数据类型
104         A:整数            占用字节数
105             byte            1
106             short            2
107             int             4
108             long            8
109         B:浮点数
110             float            4
111             double            8
112         C:字符
113             char            2
114         D:布尔
115             boolean            1
116             
117         注意:
118             整数默认是int类型,浮点数默认是double。
119             
120             长整数要加L或者l。
121             单精度的浮点数要加F或者f。
122 
123 8:数据类型转换(掌握)
124     (1)boolean类型不参与转换
125     (2)默认转换
126         A:从小到大
127         B:byte,short,char -- int -- long -- float -- double
128         C:byte,short,char之间不相互转换,直接转成int类型参与运算。
129     (3)强制转换
130         A:从大到小
131         B:可能会有精度的损失,一般不建议这样使用。
132         C:格式:
133             目标数据类型 变量名 = (目标数据类型) (被转换的数据);
134     (4)思考题和面试题:
135         A:下面两种方式有区别吗?
136             float f1 = 12.345f;
137             float f2 = (float)12.345;
138         B:下面的程序有问题吗,如果有,在哪里呢?
139             byte b1 = 3;
140             byte b2 = 4;
141             byte b3 = b1 + b2;
142             byte b4 = 3 + 4;
143         C:下面的操作结果是什么呢?
144             byte b = (byte)130;
145         D:字符参与运算
146             是查找ASCII里面的值
147             'a'        97
148             'A'        65
149             '0'        48
150             
151             System.out.println('a');
152             System.out.println('a' + 1);
153         E:字符串参与运算
154             这里其实是字符串的连接
155             
156             System.out.println("hello"+'a'+1);
157             System.out.println('a'+1+"hello");
158             System.out.println("5+5="+5+5);
159             System.out.println(5+5+"=5+5");
View Code

01_算术运算符

  1 /*
  2     运算符:
  3         就是对常量和变量进行操作的符号。
  4         
  5     分类:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符
  6 
  7     算术运算符:
  8         +,-,*,/,%,++,--
  9         
 10     注意事项:
 11         A:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
 12         B:/获取的是除法操作的商,%获取的是除法操作的余数
 13 */
 14 
 15 class OperatorDemo {
 16     public static void main(String[] args) {
 17         //定义变量
 18         int x = 3;  //把3赋值给int类型的变量x
 19         int y = 4;
 20         
 21         System.out.println(x+y);
 22         System.out.println(x-y);
 23         System.out.println(x*y);
 24         System.out.println(x/y); //整数相除只能得到整数
 25         
 26         //我就想得到小数,该肿么办呢?
 27         //只需要把操作的数据中任意的一个数据变为浮点数
 28         System.out.println(x*1.0/y);
 29         
 30         //%的应用
 31         System.out.println(x%y); //得到的是余数
 32     }
 33 }
 34 
 35 /*
 36     ++,--运算符的使用:
 37         单独使用:
 38             放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
 39         参与运算使用:
 40             放在操作数的前面,先自增或者自减,然后再参与运算。
 41             放在操作数的后面,先参与运算,再自增或者自减。
 42             
 43     作用:就是对变量进行自增1或者自减1。
 44 */
 45 class OperatorDemo2 {
 46         public static void main(String[] args) {
 47             //定义两个变量
 48             int x = 3;
 49             int y = 4;
 50             
 51             //字符串的拼接
 52             //System.out.println("x:"+x);
 53             //System.out.println("y:"+y);
 54             
 55             System.out.println("x:"+x+",y:"+y);
 56             
 57             //单独使用
 58             //x++;
 59             //y--;
 60             ++x;
 61             --y;
 62             //System.out.println(x);
 63             System.out.println("x:"+x+",y:"+y);
 64             
 65             //意外的类型,常量是不可以这样做的
 66             //System.out.println(10++);
 67             
 68             System.out.println("-------------------");
 69             //参与运算使用
 70             int a = 3;
 71             int b = 4;
 72             
 73             //int c = a++;
 74             //int d = b--;
 75             
 76             int c = ++a;
 77             int d = --b;
 78             
 79             System.out.println("a:"+a); //4, 4
 80             System.out.println("b:"+b); //3, 3
 81             System.out.println("c:"+c); //3, 4
 82             System.out.println("d:"+d); //4, 3
 83         }
 84 }
 85 
 86 
 87 /*
 88     +的用法:
 89         A:加法
 90         B:正号
 91         C:字符串连接符
 92 */
 93 class OperatorDemo3 {
 94     public static void main(String[] args) {
 95         //加法
 96         System.out.println(3+4);
 97         
 98         //正号
 99         System.out.println(+4);
100         
101         System.out.println('a');
102         System.out.println('a'+1); //这里是加法
103         
104         //字符串连接符
105         System.out.println("hello"+'a'+1);
106         System.out.println('a'+1+"hello");
107     }
108 }
109 
110 /*
111     ++,--的练习题
112     
113     第一题:
114     int a = 10;
115     int b = 10;
116     int c = 10;
117 
118     a = b++;
119     c = --a;
120     b = ++a;
121     a = c--;
122     请分别计算出a,b,c的值
123     
124     第二题:
125     int x = 4;
126     int y = (x++)+(++x)+(x*10);
127     请分别计算出x,y的值
128 */
129 class OperatorTest {
130     public static void main(String[] args) {
131         int a = 10;
132         int b = 10;
133         int c = 10;
134 
135         a = b++; //a=10,b=11,c=10
136         c = --a; //a=9,b=11,c=9
137         b = ++a; //a=10,b=10,c=9
138         a = c--; //a=9,b=10,c=8
139         
140         System.out.println("a:"+a);
141         System.out.println("b:"+b);
142         System.out.println("c:"+c);
143         System.out.println("--------------");
144         
145         int x = 4;
146         int y = (x++)+(++x)+(x*10);
147         //4+6+60
148         //x=5,6
149         
150         System.out.println("x:"+x);
151         System.out.println("y:"+y);
152     }
153 }
View Code

02_赋值运算符

 1 /*
 2     赋值运算符:
 3         基本的赋值运算符:=
 4             把=右边的数据赋值给左边。
 5             
 6         扩展的赋值运算符:+=,-=,*=,/=,%=
 7             += 把左边和右边做加法,然后赋值给左边。
 8 */
 9 class OperatorDemo {
10     public static void main(String[] args) {
11         //定义一个变量
12         int x = 10;
13         
14         //其他用法
15         int a,b; 
16         a = b = 10;
17         System.out.println(a); 
18         System.out.println(b);
19         System.out.println("-----------");
20 
21         //定义一个变量
22         int y = 10;
23         
24         y += 20;
25         
26         System.out.println(y);
27         
28     }
29 }
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 /*
44     面试题:
45         short s=1;s = s+1; 
46         
47         short s=1;s+=1;
48         上面两个代码有没有问题,如果有,那里有问题。
49         
50         为什么第二个木有问题呢?
51             扩展的赋值运算符其实隐含了一个强制类型转换。
52             
53             s += 1;
54             不是等价于 s = s + 1;
55             而是等价于 s = (s的数据类型)(s + 1);
56 */
57 class OperatorTest {
58     public static void main(String[] args) {
59         //short s = 1;
60         //s = s + 1;
61         //System.out.println(s);
62         
63         short s = 1;
64         s += 1; //好像是 s = s + 1;
65         System.out.println(s);
66     }
67 }
View Code

03_比较运算符

 1 /*
 2     比较运算符:
 3         ==,!=,>,>=,<,<=
 4         
 5     特点:
 6         无论你的操作是简单还是复杂,结果是boolean类型。
 7         
 8     注意事项:
 9         "=="不能写成"="。
10 */
11 class OperatorDemo {
12     public static void main(String[] args) {
13         int x = 3;
14         int y = 4;
15         int z = 3;
16     
17         System.out.println(x == y);
18         System.out.println(x == z);
19         System.out.println((x+y) == (x+z));
20         System.out.println("------------");
21         
22         System.out.println(x != y);
23         System.out.println(x > y);
24         System.out.println(x >= y);
25         System.out.println(x < y);
26         System.out.println(x <= y);
27         System.out.println("------------");
28         
29         int a = 10;
30         int b = 20;
31         
32         //boolean flag = (a == b);
33         //boolean flag = (a = b); //这个是有问题的,不兼容的类型
34         //System.out.println(flag);
35         
36         int c = (a = b); //把b赋值给a,然后把a留下来
37         System.out.println(c);
38     }
39 }
View Code

04_逻辑运算符

 1 /*
 2     逻辑运算符:
 3         &,|,^,!
 4         &&,||
 5         
 6     特点:
 7         逻辑运算符一般用于连接boolean类型的表达式或者值。
 8             
 9         表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
10             算术表达式:a + b
11             比较表达式:a == b
12             
13     结论:
14         &逻辑与:有false则false。
15         |逻辑或:有true则true。
16         ^逻辑异或:相同为false,不同为true。
17             举例:情侣关系。男男,男女,女男,女女
18         !逻辑非:非false则true,非true则false。
19             特点:偶数个不改变本身。
20 */
21 class OperatorDemo {
22     public static void main(String[] args) {
23         int a = 3;
24         int b = 4;
25         int c = 5;
26         
27         //&逻辑与
28         System.out.println((a > b) & (a > c)); //false & false = false
29         System.out.println((a > b) & (a < c)); //false & true = false
30         System.out.println((a < b) & (a > c)); //true & false = false
31         System.out.println((a < b) & (a < c)); //true & true = true
32         System.out.println("---------------");
33 
34         //|逻辑或
35         System.out.println((a > b) | (a > c)); //false | false = false
36         System.out.println((a > b) | (a < c)); //false | true = true
37         System.out.println((a < b) | (a > c)); //true | false = true
38         System.out.println((a < b) | (a < c)); //true | true = true
39         System.out.println("---------------");
40         
41         //^逻辑异或
42         System.out.println((a > b) ^ (a > c)); //false ^ false = false
43         System.out.println((a > b) ^ (a < c)); //false ^ true = true
44         System.out.println((a < b) ^ (a > c)); //true ^ false = true
45         System.out.println((a < b) ^ (a < c)); //true ^ true = false
46         System.out.println("---------------");
47         //!逻辑非
48         System.out.println(!(a > b)); //!false = true
49         System.out.println(!(a < b)); //!true = false
50         System.out.println(!!(a > b)); //!!false = false
51         System.out.println(!!!(a > b)); //!!false = true
52     }
53 }
54 
55 
56 /*
57     &&和&的区别? 同理||和|的区别?
58         A:最终结果一样。
59         B:&&具有短路效果。左边是false,右边不执行。
60         
61     开发中常用的逻辑运算符:
62         &&,||,!
63 */
64 class OperatorDemo2 {
65     public static void main(String[] args) {
66         int a = 3;
67         int b = 4;
68         int c = 5;
69         //&&双与
70         System.out.println((a > b) && (a > c)); //false && false = false
71         System.out.println((a > b) && (a < c)); //false && true = false
72         System.out.println((a < b) && (a > c)); //true && false = false
73         System.out.println((a < b) && (a < c)); //true && true = true
74         System.out.println("----------------");
75         int x = 3;
76         int y = 4;
77         //boolean b1 = ((x++ == 3) & (y++ == 4));
78         //boolean b1 = ((x++ == 3) && (y++ == 4));
79         //boolean b1 = ((++x == 3) & (y++ == 4));
80         boolean b1 = ((++x == 3) && (y++ == 4));
81         System.out.println("x:"+x);
82         System.out.println("y:"+y);
83         System.out.println(b1);
84     }
85 }
View Code

05_位运算符

  1 /*
  2     位运算符:
  3         &,|,^,~
  4         <<,>>,>>>
  5         
  6     注意:
  7         要做位运算,首先要把数据转换为二进制。
  8 */
  9 class OperatorDemo {
 10     public static void main(String[] args) {
 11         //&,|,^,~
 12         
 13         int a = 3;
 14         int b = 4;
 15         
 16         System.out.println(3 & 4);
 17         System.out.println(3 | 4);
 18         System.out.println(3 ^ 4);
 19         System.out.println(~3);
 20     }
 21 }
 22 /*
 23     分析:因为是位运算,所以我们必须先把数据换算成二进制。
 24     
 25     3的二进制:11
 26         00000000 00000000 00000000 00000011
 27     4的二进制:100
 28         00000000 00000000 00000000 00000100
 29     
 30     &位与运算:有0则0。
 31         00000000 00000000 00000000 00000011
 32        &00000000 00000000 00000000 00000100
 33         -----------------------------------
 34         00000000 00000000 00000000 00000000
 35         结果是:0
 36         
 37     |位或运算:有1则1。
 38         00000000 00000000 00000000 00000011
 39        |00000000 00000000 00000000 00000100
 40         -----------------------------------
 41         00000000 00000000 00000000 00000111
 42         结果是:7
 43         
 44     ^位异或运算:相同则0,不同则1。
 45         00000000 00000000 00000000 00000011
 46        &00000000 00000000 00000000 00000100
 47         -----------------------------------
 48         00000000 00000000 00000000 00000111
 49         结果是:7
 50         
 51     ~按位取反运算符:0变1,1变0
 52         00000000 00000000 00000000 00000011
 53        ~11111111 11111111 11111111 11111100 (补码)
 54        
 55        补码:11111111 11111111 11111111 11111100
 56        反码:11111111 11111111 11111111 11111011
 57        原码:10000000 00000000 00000000 00000100
 58         结果是:-4
 59 */
 60 
 61 /*
 62     ^的特点:一个数据对另一个数据位异或两次,该数本身不变。
 63 */
 64 class OperatorDemo2 {
 65     public static void main(String[] args) {
 66         int a = 10;
 67         int b = 20;
 68         
 69         System.out.println(a ^ b ^ b); //10
 70         System.out.println(a ^ b ^ a); //20
 71     }
 72 }
 73 
 74 
 75 /*
 76     <<:左移    左边最高位丢弃,右边补齐0
 77     >>:右移    最高位是0,左边补齐0;最高为是1,左边补齐1
 78     >>>:无符号右移 无论最高位是0还是1,左边补齐0
 79     
 80     面试题:
 81         请用最有效率的方式写出计算2乘以8的结果?
 82             2 * 8
 83             
 84             2 << 3
 85 
 86 */
 87 class OperatorDemo3 {
 88     public static void main(String[] args) {
 89         //<< 把<<左边的数据乘以2的移动次幂
 90         System.out.println(3 << 2); //3*2^2 = 3*4 = 12;
 91     
 92         //>> 把>>左边的数据除以2的移动次幂
 93         System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6
 94         System.out.println(24 >>> 2);
 95         
 96         System.out.println(-24 >> 2); 
 97         System.out.println(-24 >>> 2);
 98     }
 99 }
100 /*
101     计算出3的二进制:11
102         00000000 00000000 00000000 00000011
103     (00)000000 00000000 00000000 0000001100
104         
105     >>的移动:    
106     计算出24的二进制:11000
107         原码:10000000 00000000 00000000 00011000
108         反码:11111111 11111111 11111111 11100111
109         补码:11111111 11111111 11111111 11101000
110         
111         11111111 11111111 11111111 11101000
112         1111111111 11111111 11111111 111010(00) 补码
113         
114         补码:1111111111 11111111 11111111 111010
115         反码:1111111111 11111111 11111111 111001
116         原码:1000000000 00000000 00000000 000110
117         
118         结果:-6
119         
120     >>>的移动:
121         计算出24的二进制:11000
122         原码:10000000 00000000 00000000 00011000
123         反码:11111111 11111111 11111111 11100111
124         补码:11111111 11111111 11111111 11101000
125         
126         11111111 11111111 11111111 11101000
127         0011111111 11111111 11111111 111010(00)
128         
129         结果:
130 */
131 /*
132     面试题:
133         请自己实现两个整数变量的交换
134         注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。
135 */
136 class OperatorTest {
137     public static void main(String[] args) {
138         int a = 10;
139         int b = 20;
140         
141         System.out.println("a:"+a+",b:"+b);
142         
143         //方式1:使用第三方变量(开发中用的)
144         /*
145         int c = a;
146         a = b;
147         b = c;
148         System.out.println("a:"+a+",b:"+b);
149         System.out.println("------------");
150         */
151         
152         //方式2:用位异或实现(面试用)
153         //左边:a,b,a
154         //右边:a ^ b
155         /*
156         a = a ^ b;
157         b = a ^ b; //a ^ b ^ b = a
158         a = a ^ b; //a ^ b ^ a = b
159         System.out.println("a:"+a+",b:"+b);
160         */
161         
162         //方式3:用变量相加的做法
163         /*
164         a = a + b; //a=30
165         b = a - b; //b=10
166         a = a - b; //a=20
167         System.out.println("a:"+a+",b:"+b);
168         */
169         
170         //方式4:一句话搞定
171         b = (a+b) - (a=b); //b=30-20=10,a=20
172         System.out.println("a:"+a+",b:"+b);
173     }
174 }
View Code

06_三目运算符

 1 /*
 2     单目运算符:~3
 3     双目运算符:3 + 4
 4 
 5     三目运算符:
 6         格式:比较表达式?表达式1:表达式2;
 7         
 8         比较表达式:结果是一个boolean类型。
 9         
10         执行流程:
11             根据比较表达式的计算返回一个true或者false。
12             如果是true,就把表达式1作为结果。
13             如果是false,就把表达式2作为结果。
14 */
15 class OperatorDemo {
16     public static void main(String[] args) {
17         int x = 100;
18         int y = 200;
19         
20         int z = ((x > y)? x: y);
21         
22         //int z = ((x < y)? x: y);
23         
24         //int z = ((x == y)? x: y);
25         
26         //报错
27         //int z = ((x = y)? x : y);
28         
29         System.out.println("z:"+z);
30     }
31 }
32 
33 
34 
35 
36 
37 /*
38     练习:
39         获取两个整数中的最大值
40         获取三个整数中的最大值
41         比较两个整数是否相同
42 */
43 class OperatorTest {
44     public static void main(String[] args) {
45         //获取两个整数中的最大值
46         int x = 100;
47         int y = 200;
48         
49         int max = (x > y? x: y);
50         System.out.println("max:"+max);
51         System.out.println("--------");
52         
53         //获取三个整数中的最大值
54         int a = 10;
55         int b = 30;
56         int c = 20;
57         
58         //分两步:
59         //A:先比较a,b的最大值
60         //B:拿a,b的最大值在和c进行比较
61         int temp = ((a > b)? a: b);
62         //System.out.println(temp);
63         int max1 = (temp > c? temp: c);
64         System.out.println("max1:"+max1);
65         
66         //一步搞定
67         //int max2 = (a > b)?((a > c)? a: c):((b > c)? b: c);
68         //这种做法不推荐。
69         //int max2 = a > b?a > c? a: c:b > c? b: c;
70         //System.out.println("max2:"+max2);
71         System.out.println("--------");
72         
73         //比较两个整数是否相同
74         int m = 100;
75         int n = 200;
76         
77         //boolean flag = (m == n)? true: false;
78         boolean flag = (m == n);
79         System.out.println(flag);
80     }
81 }
View Code

07_键盘录入

  1 /*
  2     为了让程序的数据更符合开发的数据,我们就加入了键盘录入。
  3     让程序更灵活一下。
  4     
  5     那么,我们如何实现键盘数据的录入呢?
  6         A:导包
  7             格式:
  8                 import java.util.Scanner; 
  9             位置:
 10                 在class上面。
 11         B:创建键盘录入对象
 12             格式:
 13                 Scanner sc = new Scanner(System.in);
 14         C:通过对象获取数据    
 15             格式:
 16                 int x = sc.nextInt();
 17 */
 18 import java.util.Scanner;
 19 
 20 class ScannerDemo {
 21     public static void main(String[] args) {
 22         //创建键盘录入数据对象
 23         Scanner sc = new Scanner(System.in);
 24         
 25         System.out.println("请你输入一个数据:");
 26         int x = sc.nextInt();
 27         
 28         System.out.println("你输入的数据是:"+x);
 29     }
 30 }
 31 
 32 /*
 33     键盘录入练习:
 34         键盘录入两个数据,并对这两个数据求和,输出其结果
 35 */
 36 import java.util.Scanner;
 37 
 38 class ScannerTest {
 39     public static void main(String[] args) {
 40         //键盘录入两个数据,并对这两个数据求和,输出其结果
 41         //创建键盘录入对象
 42         Scanner sc = new Scanner(System.in);
 43         
 44         System.out.println("请输入第一个数据:");
 45         int x = sc.nextInt();
 46         
 47         System.out.println("请输入第二个数据:");
 48         int y = sc.nextInt();
 49         
 50         //把键盘录入的数据进行相加即可
 51         int sum = (x + y);
 52         System.out.println("sum:"+sum);
 53     }
 54 }
 55 
 56 /*
 57     键盘录入练习:键盘录入两个数据,获取这两个数据中的最大值
 58 */
 59 
 60 import java.util.Scanner;
 61 
 62 class ScannerTest2 {
 63     public static void main(String[] args) {
 64         //创建键盘录入对象
 65         Scanner sc = new Scanner(System.in);
 66         
 67         System.out.println("请输入第一个数据:");
 68         int a = sc.nextInt();
 69         
 70         System.out.println("请输入第二个数据:");
 71         int b = sc.nextInt();
 72         
 73         //获取这两个数据中的最大值
 74         int max = (a > b? a: b);
 75         System.out.println("max:"+max);
 76     }
 77 }
 78 
 79 
 80 
 81 
 82 /*
 83     练习:
 84         键盘录入三个数据,获取这三个数据中的最大值
 85         键盘录入两个数据,比较这两个数据是否相等
 86 */
 87 import java.util.Scanner;
 88 
 89 class ScannerTest3 {
 90     public static void main(String[] args) {
 91         //键盘录入三个数据,获取这三个数据中的最大值
 92     
 93         //创建键盘录入对象
 94         Scanner sc = new Scanner(System.in);
 95         
 96         System.out.println("请输入第一个数据:");
 97         int a = sc.nextInt();
 98         
 99         System.out.println("请输入第二个数据:");
100         int b = sc.nextInt();
101         
102         System.out.println("请输入第三个数据:");
103         int c = sc.nextInt();
104         
105         //获取这三个数据中的最大值
106         int temp = ((a > b)? a: b);
107         int max = (temp > c? temp : c);
108         System.out.println("max:"+max);
109         System.out.println("------------------");
110         
111         //键盘录入两个数据
112         System.out.println("请输入第一个数据:");
113         int x = sc.nextInt();
114         
115         System.out.println("请输入第二个数据:");
116         int y = sc.nextInt();
117         
118         //比较这两个数据是否相等
119         boolean flag = (x == y);
120         System.out.println("flag:"+flag);
121     }
122 }
View Code

08_顺序结构

 1 /*
 2     流程控制语句:可以控制程序的执行流程。
 3     
 4     分类:
 5         顺序结构
 6         选择结构
 7         循环结构
 8         
 9     顺序结构:
10         从上往下,依次执行。
11 */
12 class ShunXuJieGouDemo {
13     public static void main(String[] args) {
14         System.out.println("程序开始了");
15         
16         System.out.println("我爱Java");
17         
18         System.out.println("程序结束了");
19     }
20 }
View Code

09_选择结构(if语句)

  1 /*
  2     选择结构:
  3         if语句
  4         switch语句
  5         
  6     if语句:
  7         格式1
  8         格式2
  9         格式3
 10         
 11     if语句的格式:
 12         if(比较表达式) {
 13             语句体;
 14         }
 15         
 16         执行流程:
 17             先计算比较表达式的值,看其返回值是true还是false。
 18             如果是true,就执行语句体;
 19             如果是false,就不执行语句体;
 20 */
 21 class IfDemo {
 22     public static void main(String[] args) {
 23         int x = 10;
 24         
 25         if(x == 10) {
 26             System.out.println("x等于10");
 27         }
 28         
 29         if(x == 20) {
 30             System.out.println("x等于20");
 31         }
 32         
 33         System.out.println("over");
 34     }
 35 }
 36 
 37 /*
 38     if语句的注意事项:
 39         A:比较表达式无论简单还是复杂,结果必须是boolean类型
 40         B:if语句控制的语句体如果是一条语句,大括号可以省略;
 41           如果是多条语句,就不能省略。建议永远不要省略。
 42         C:一般来说:有左大括号就没有分号,有分号就没有左大括号
 43 */
 44 class IfDemo2 {
 45     public static void main(String[] args) {
 46         int x = 10;
 47         
 48         if(x == 10) {
 49             System.out.println("x等于10");
 50         }
 51         
 52         if((x > 5) || (x == 10)) {
 53             System.out.println("x大于或者等于10");
 54         }
 55         System.out.println("-------------------");
 56         
 57         int a = 100;
 58         
 59         /*
 60         if(a == 100) {
 61             System.out.println("a的值是100");
 62         }
 63         */
 64         if(a != 100) {
 65             System.out.println("a的值是100");
 66             System.out.println("over");
 67         }
 68         System.out.println("-------------------");
 69         
 70         int b = 100;
 71         if(b != 100);  //这里其实是有语句体的,只不过是空语句体。
 72         //代码块
 73         {
 74             System.out.println("b的值是100");
 75             System.out.println("over");
 76         }
 77     }
 78 }
 79 
 80 /*
 81     if语句格式2:
 82         if(比较表达式) {
 83             语句体1;
 84         }else {
 85             语句体2;
 86         }
 87     执行流程:
 88         首先计算比较表达式的值,看其返回值是true还是false。
 89         如果是true,就执行语句体1;
 90         如果是false,就执行语句体2;
 91         
 92     注意:else后面是没有比较表达式的,只有if后面有。
 93 */
 94 class IfDemo3 {
 95     public static void main(String[] args) {
 96         //判断两个数据是否相等
 97         
 98         int a = 10;
 99         int b = 20;
100         
101         if(a == b) {
102             System.out.println("a等于b");
103         }else {
104             System.out.println("a不等于b");
105         }
106     }
107 }
108 
109 /*
110     由于if语句的第二种格式刚才也完成了三元运算符可以完成的效果。
111     所以,我们就认为他们可以完成一样的操作。
112     但是,他们就一点区别没有吗?肯定不是。
113     
114     区别:
115         三元运算符实现的,都可以采用if语句实现。反之不成立。
116         
117         什么时候if语句实现不能用三元改进呢?
118             当if语句控制的操作是一个输出语句的时候就不能。
119             为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
120 */
121 class IfDemo4 {
122     public static void main(String[] args) {
123         //获取两个数据的最大值
124         int a = 10;
125         int b = 20;
126         
127         //用if语句实现
128         int max1;
129         if(a > b) {
130             max1 = a;
131         }else {
132             max1 = b;
133         }
134         System.out.println("max1:"+max1);
135         
136         //用三元改进
137         int max2 = (a > b)? a: b;
138         System.out.println("max2:"+max2);
139         System.out.println("----------");
140         
141         //判断一个数据是奇数还是偶数,并输出是奇数还是偶数
142         int x = 100;
143         
144         if(x%2 == 0) {
145             System.out.println("100是一个偶数");
146         }else {
147             System.out.println("100是一个奇数");
148         } 
149         
150         //用三元改进
151         //这种改进是错误的。
152         //String s = (x%2 == 0)?System.out.println("100是一个偶数");:System.out.println("100是一个奇数");;
153     }
154 }
155 
156 /*
157     if语句的格式3:
158         if(比较表达式1) {
159             语句体1;
160         }else if(比较表达式2) {
161             语句体2;
162         }else if(比较表达式3) {
163             语句体3;
164         }
165         ...
166         else {
167             语句体n+1;
168         }
169         
170     执行流程:
171         首先计算比较表达式1看其返回值是true还是false,
172         如果是true,就执行语句体1,if语句结束。
173         如果是false,接着计算比较表达式2看其返回值是true还是false,
174         
175         如果是true,就执行语句体2,if语句结束。
176         如果是false,接着计算比较表达式3看其返回值是true还是false,
177         ...
178         
179         如果都是false,就执行语句体n+1。
180 */
181 import java.util.Scanner;
182 
183 class IfDemo5 {
184     public static void main(String[] args) {
185         //需求:键盘录入一个成绩,判断并输出成绩的等级。
186         /*
187             90-100 优秀
188             80-90  好
189             70-80  良
190             60-70  及格
191             0-60   不及格
192         */
193         
194         //创建键盘录入对象
195         Scanner sc = new Scanner(System.in);
196         
197         //录入数据
198         System.out.println("请输入你的考试成绩:");
199         int score = sc.nextInt();
200         
201         /*
202         if(score>=90 && score<=100) {
203             System.out.println("优秀");
204         }else if(score>=80 && score<90) {
205             System.out.println("好");
206         }else if(score>=70 && score<80) {
207             System.out.println("良");
208         }else if(score>=60 && score<70) {
209             System.out.println("及格");
210         }else {
211             System.out.println("不及格");
212         }
213         */
214         //这样写已经满足我的基本要求,但是可能别人在使用的时候,不会按照你要求的数据给出了。
215         //在做一个程序的基本测试的时候,一定要考虑这样的几个问题:
216         //正确数据,错误数据,边界数据。
217         //而我们刚才写的程序并没有处理错误数据,所以这个程序不是很好,要改进
218         /*
219         if(score>=90 && score<=100) {
220             System.out.println("优秀");
221         }else if(score>=80 && score<90) {
222             System.out.println("好");
223         }else if(score>=70 && score<80) {
224             System.out.println("良");
225         }else if(score>=60 && score<70) {
226             System.out.println("及格");
227         }else if(score>=0 && score<60){
228             System.out.println("不及格");
229         }else {
230             System.out.println("你输入的成绩有误");
231         }
232         */
233         
234         //另一种判断改进
235         if(score<0 || score>100) {
236             System.out.println("你输入的成绩有误");
237         }else if(score>=90 && score<=100) {
238             System.out.println("优秀");
239         }else if(score>=80 && score<90) {
240             System.out.println("好");
241         }else if(score>=70 && score<80) {
242             System.out.println("良");
243         }else if(score>=60 && score<70) {
244             System.out.println("及格");
245         }else {
246             System.out.println("不及格");
247         }
248     }
249 }
250 
251 
252 
253 
254 
255 /*
256     if语句格式2的练习:
257         A:获取两个数据中较大的值
258         B:判断一个数据是奇数还是偶数,并输出是奇数还是偶数
259 */
260 import java.util.Scanner;
261 
262 class IfTest {
263     public static void main(String[] args) {
264         //创建键盘录入对象
265         Scanner sc = new Scanner(System.in);
266         
267         //获取两个数据中较大的值
268         System.out.println("请输入第一个数据:");
269         int a = sc.nextInt();
270         
271         System.out.println("请输入第二个数据:");
272         int b = sc.nextInt();
273         
274         //定义一个变量接收最大值
275         int max;
276         
277         if(a > b) {
278             max = a;
279         }else {
280             max = b;
281         }
282         
283         System.out.println("max:"+max);
284         System.out.println("----------------");
285         
286         //判断一个数据是奇数还是偶数
287         System.out.println("请输入你要判断的数据:");
288         int x = sc.nextInt();
289         
290         if(x%2 == 0) {
291             System.out.println(x+"这个数据是偶数");
292         }else {
293             System.out.println(x+"这个数据是奇数");
294         }
295     }
296 }
297 
298 /*
299     三种if语句分别适合做什么事情呢?
300         格式1:适合做单个判断
301         格式2:适合做两个判断
302         格式3:适合做多个判断
303         
304     需求:
305         键盘录入x的值,计算出y的并输出。
306         
307         x>=3    y = 2x + 1;
308         -1<=x<3    y = 2x;
309         x<=-1    y = 2x – 1;
310         
311     分析:
312         A:由于数据要键盘录入,所以必须使用Scanner。
313         B:由于是三种判断,所以我们选择if语句格式3。
314 */
315 import java.util.Scanner;
316 
317 class IfTest2 {
318     public static void main(String[] args) {
319         //创建键盘录入对象
320         Scanner sc = new Scanner(System.in);
321         
322         System.out.println("请输入x的值:");
323         int x = sc.nextInt();
324         
325         //定义一个y
326         int y;
327         
328         //用if语句格式3进行判断
329         if(x >= 3) {
330             y = 2*x + 1;
331         }else if(x>=-1 && x<3) {
332             y = 2*x;
333         }else {
334             y = 2*x - 1;
335         }
336         
337         System.out.println("y:"+y);
338     }
339 }
340 
341 /*
342     键盘录入月份的值,输出对应的季节。
343     
344     春    3,4,5
345     夏    6,7,8
346     秋    9,10,11
347     冬    12,1,2
348     
349     分析:
350         A:键盘录入月份的值,所以我们要使用Scanner。
351         B:我们应该判断这个月份在那个季节,而这个判断情况较多,所以,用if语句格式3。
352         
353     if语句的使用场景:
354         A:针对表达式是一个boolean类型的判断
355         B:针对一个范围的判断
356 */
357 import java.util.Scanner;
358 
359 class IfTest3 {
360     public static void main(String[] args) {
361         //创建键盘录入对象
362         Scanner sc = new Scanner(System.in);
363         
364         //录入数据
365         System.out.println("请你输入一个月份:");
366         int month = sc.nextInt();
367         
368         //第三种格式实现即可
369         if(month<1 || month>12) {
370             System.out.println("你输入的月份有误");
371         }else if(month == 1) {
372             System.out.println("冬季");
373         }else if(month == 2) {
374             System.out.println("冬季");
375         }else if(month == 3) {
376             System.out.println("春季");
377         }else if(month == 4) {
378             System.out.println("春季");
379         }else if(month == 5) {
380             System.out.println("春季");
381         }else if(month == 6) {
382             System.out.println("夏季");
383         }else if(month == 7) {
384             System.out.println("夏季");
385         }else if(month == 8) {
386             System.out.println("夏季");
387         }else if(month == 9) {
388             System.out.println("秋季");
389         }else if(month == 10) {
390             System.out.println("秋季");
391         }else if(month == 11) {
392             System.out.println("秋季");
393         }else {
394             System.out.println("冬季");
395         }
396         System.out.println("--------------");
397         
398         //这个程序确实是符合了我们的需求,但是就是看起来比较麻烦
399         //那么,我们能不能改进一下呢?
400         //month == 3
401         //month == 4
402         //month == 5
403         //我们发现,上面三个都是春季。
404         //而他们本身每一个都是一个boolean表达式
405         //所以,我们就可以考虑使用逻辑运算符给他们连接起来改进
406         if(month<1 || month>12) {
407             System.out.println("你输入的月份有误");
408         }else if(month==3 || month==4 || month==5) {
409             System.out.println("春季");
410         }else if(month==6 || month==7 || month==8) {
411             System.out.println("夏季");
412         }else if(month==9 || month==10 || month==11) {
413             System.out.println("秋季");
414         }else {
415             System.out.println("冬季");
416         }
417         System.out.println("--------------");
418         
419         //这个时候,程序代码以及可以了。
420         //但是呢,假如我要求你输入一个月份,判断是上半年还是下半年。
421         //这个时候,我们的判断条件连接就是6个boolean表达式
422         //我们可能还有更多的连接
423         //这个时候,其实我们还有另外的一种改进方案:
424         //month == 3
425         //month == 4
426         //month == 5
427         //month>=3 && month<=5
428         //用范围也是可以改进的。
429         if(month<1 || month>12) {
430             System.out.println("你输入的月份有误");
431         }else if(month>=3 && month<=5) {
432             System.out.println("春季");
433         }else if(month>=6 && month<=8) {
434             System.out.println("夏季");
435         }else if(month>=9 && month<=11) {
436             System.out.println("秋季");
437         }else {
438             System.out.println("冬季");
439         }
440         System.out.println("--------------");
441     }
442 }
443 
444 
445 /*
446     获取三个数据中的最大值
447     由此案例主要是为了讲解if语句是可以嵌套使用的。而且是可以任意的嵌套。
448 */
449 class IfTest4 {
450     public static void main(String[] args) {
451         int a = 10;
452         int b = 30;
453         int c = 20;
454         
455         //三元实现
456         //int temp = (a>b)? a: b;
457         //int max = (temp>c)? temp: c;
458         //System.out.println("max:"+max);
459         //System.out.println("--------");
460         
461         //用if语句实现
462         int max;
463         if(a > b) {
464             if(a > c) {
465                 max = a;
466             }else {
467                 max = c;
468             }
469         }else {
470             if(b > c) {
471                 max = b;
472             }else {
473                 max = c;
474             }
475         }
476         System.out.println("max:"+max);
477     }
478 }
View Code

小结:

  1 1:运算符(掌握)
  2     (1)算术运算符
  3         A:+,-,*,/,%,++,--
  4         B:+的用法
  5             a:加法
  6             b:正号
  7             c:字符串连接符
  8         C:/和%的区别
  9             数据做除法操作的时候,/取得是商,%取得是余数
 10         D:++和--的用法
 11             a:他们的作用是自增或者自减
 12             b:使用
 13                 **单独使用
 14                     放在操作数据的前面和后面效果一样。
 15                     a++或者++a效果一样。
 16                 **参与操作使用
 17                     放在操作数的前面:先自增或者自减,再参与操作
 18                         int a = 10;
 19                         int b = ++a;
 20                     放在操作数的后面:先参与操作,再自增或者自减
 21                         int a = 10;
 22                         int b = a++;
 23     (2)赋值运算符
 24         A:=,+=,-=,*=,/=,%= 25         B:=叫做赋值运算符,也是最基本的赋值运算符
 26             int x = 10; 把10赋值给int类型的变量x。
 27         C:扩展的赋值运算符的特点
 28             隐含了自动强制转换。
 29             
 30             面试题:
 31                 short s = 1;
 32                 s = s + 1;
 33                 
 34                 short s = 1;
 35                 s += 1;
 36                 请问上面的代码哪个有问题?
 37     (3)比较运算符
 38         A:==,!=,>,>=,<,<=
 39         B:无论运算符两端简单还是复杂最终结果是boolean类型。
 40         C:千万不要把==写成了=
 41     (4)逻辑运算符
 42         A:&,|,^,!,&&,||
 43         B:逻辑运算符用于连接boolean类型的式子
 44         C:结论
 45             &:有false则false
 46             |:有true则true
 47             ^:相同则false,不同则true。
 48                 情侣关系。
 49             !:非true则false,非false则true
 50             
 51             &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
 52             ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
 53     (5)位运算符(了解)
 54         A:^的特殊用法
 55             一个数据针对另一个数据位异或两次,该数不变
 56         B:面试题
 57             a:请实现两个变量的交换
 58                 **采用第三方变量
 59                 **用位异或运算符
 60                     左边a,b,a
 61                     右边a^b
 62             b:请用最有效率的方式计算出2乘以8的结果
 63                 2<<3
 64     (6)三元运算符
 65         A:格式
 66             比较表达式?表达式1:表达式2;
 67         B:执行流程:
 68             首先计算比较表达式的值,看是true还是false。
 69             如果是true,表达式1就是结果。
 70             如果是false,表达式2就是结果。
 71         C:案例:
 72             a:比较两个数据是否相等
 73             b:获取两个数据中的最大值
 74             c:获取三个数据中的最大值
 75             
 76 2:键盘录入(掌握)
 77     (1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
 78     (2)如何实现呢?目前就记住
 79         A:导包
 80             import java.util.Scanner;
 81             位置:在class的上边
 82         B:创建对象
 83             Scanner sc = new Scanner(System.in);
 84         C:获取数据
 85             int x = sc.nextInt();
 86     (3)把三元运算符的案例加入键盘录入改进。
 87 
 88 3:流程控制语句
 89     (1)顺序结构 从上往下,依次执行
 90     (2)选择结构    按照不同的选择,执行不同的代码
 91     (3)循环结构 做一些重复的代码
 92 
 93 4:if语句(掌握)
 94     (1)三种格式
 95         A:格式1
 96             if(比较表达式) {
 97                 语句体;
 98             }
 99             
100             执行流程:
101                 判断比较表达式的值,看是true还是false
102                 如果是true,就执行语句体
103                 如果是false,就不执行语句体
104         
105         B:格式2
106             if(比较表达式) {
107                 语句体1;
108             }else {
109                 语句体2;
110             }
111             
112             执行流程:
113                 判断比较表达式的值,看是true还是false
114                 如果是true,就执行语句体1
115                 如果是false,就执行语句体2
116                 
117         C:格式3
118             if(比较表达式1) {
119                 语句体1;
120             }else if(比较表达式2){
121                 语句体2;
122             }
123             ...
124             else {
125                 语句体n+1;
126             }
127             
128             执行流程:
129                 判断比较表达式1的值,看是true还是false
130                 如果是true,就执行语句体1
131                 如果是false,就继续判断比较表达式2的值,看是true还是false
132                 如果是true,就执行语句体2
133                 如果是false,就继续判断比较表达式3的值,看是true还是false
134                 ...
135                 如果都不满足,就执行语句体n+1
136     (2)注意事项
137         A:比较表达式无论简单还是复杂,结果是boolean类型
138         B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
139             建议:永远不要省略。
140         C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
141         D:else后面如果没有if,是不会出现比较表达式的。
142         E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
143     (3)案例:
144         A:比较两个数是否相等
145         B:获取两个数中的最大值
146         C:获取三个数中的最大值(if语句的嵌套)
147         D:根据成绩输出对应的等级
148         E:根据月份,输出对应的季节
149         F:根据x计算对应y的值并输出
150     (4)三元运算符和if语句第二种格式的关系
151         所有的三元运算符能够实现的,if语句的第二种格式都能实现。
152         反之不成立。
153         
154         如果if语句第二种格式控制的语句体是输出语句,就不可以。
155         因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。
View Code

 

转载于:https://www.cnblogs.com/961013-yu/p/9496617.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值