1 /*****************
2 ***第二章基本语法
3 *******知识点:
4 **************1.注释
5 ******************1.1 单行注释
6 ******************1.2 多行注释
7 **************2.标识符、关键字
8 **************3.基本数据类型
9 ******************3.1 整型
10 ******************3.2 浮点型
11 ******************3.3 字符型
12 ******************3.4 布尔型
13 **************4.基本运算符
14 ******************4.1 赋值运算符
15 ******************4.2 算术运算符
16 ******************4.3 自增自减运算符
17 ******************4.4 逻辑运算符
18 ******************4.5 比较运算符
19 ******************4.6 三目运算符
20 ******************4.7 位运算符
21 **************5.语句结构
22 ******************5.1 顺序结构
23 ******************5.2 分支结构
24 **************************5.2.1 if结构
25 **************************5.2.2 if-else结构
26 **************************5.2.3 if-else if-else结构
27 **************************5.2.4 switch结构
28 ******************5.3 循环结构
29 **************************5.3.1 while结构
30 **************************5.3.2 do - while结构
31 **************************5.3.3 for结构
32 **************************5.3.4 foreach结构
33 ******************5.4 跳出结构
34 **************************5.4.1 break
35 **************************5.4.2 continue
36 **************************5.4.3 return
37 **************6.数组
38 ******************6.1 一维数组
39 ******************6.2 二维数组
40 ******************6.3 多维数组
41 *****************/
42 import java.util.Arrays; //因为使用到API数组排序 需要导入包 import语句必须在最前面不能在class代码内
43
44 public class test2{
45 public static void main(String[] args){
46 showDemo("1.注释");
47 demoNote();//演示1.注释
48
49 showDemo("2.标识符、关键字");
50 demoKeyWord();//演示2.标识符、关键字
51
52 showDemo("3.基本数据类型");
53 demoDataSort();//演示3.基本数据类型
54
55 showDemo("4.基本运算符");
56 demoCalcSymbol();//演示4.基本运算符
57
58 showDemo("5.语句结构");
59 demoStatementStruct();//演示5.语句结构
60
61 showDemo("6.数组");
62 demoArray();//演示6.数组
63
64
65 }
66
67 /*
68 * 抽取打印演示函数 用于打印演示功能提示
69 */
70 public static void showDemo(String demoStr){
71 System.out.println("演示:" + demoStr);
72 }
73
74 /*
75 * 1.注释演示
76 */
77 public static void demoNote(){
78 //1.1单行注释 这是单行注释
79
80 /* 1.2多行注释
81 * 我
82 * 是
83 * 华
84 * 丽
85 * 的
86 * 注
87 * 释
88 * 行
89 */
90 }
91
92 /*
93 *2.标识符、关键字
94 */
95 public static void demoKeyWord(){
96 int $a,a_a,a2; //其中int为java关键字 $a,a_a,a2;为标识符
97 }
98
99 /*
100 *3.基本数据类型(四类八种)
101 * 其中注意数据类型的强转换问题、字符类型可以存中文字符
102 */
103 public static void demoDataSort(){
104 /*
105 *3.1整型
106 *需注意:低范围赋值给高范围时无问题.高范围赋值给低范围时会截取,当超过范围时溢出。
107 *其中byte 1个字节 short 2个字节 int 4个字节 long 8个字节
108 */
109 byte b_; short s_; int i_; long l_;
110 b_ = -128 ;
111 l_ = b_;
112 System.out.println("l_:" + l_); //l_可以存储-128 所以此时打印-128
113 i_ = 32768;
114 s_ = (short) i_;
115 System.out.println("s_:" + s_); //s_不可以存储32768,所以出现溢出 打印-32768
116
117 /*
118 *3.2 浮点型
119 *其中float 4个字节 double 8个字节
120 */
121 float f_; double d_;
122
123 /*
124 *3.3 字符型
125 *其中char 2个字节
126 */
127 char c_;
128
129 c_ = '黄' ;//汉字为两个字节 需跟string区别 char类型为单引号 string为双引号
130 System.out.println("c_:" + c_);
131
132 /*
133 *3.4 布尔型
134 *其中boolean 1个字节
135 */
136 boolean b_l;
137 b_l = true ; //布尔型 取值为 true / false
138 System.out.println("b_l:" + b_l);
139
140 }
141
142 /*
143 *4.基本运算符
144 ************4.1 赋值运算符
145 ************4.2 算术运算符
146 ************4.3 自增自减运算符
147 ************4.4 逻辑运算符
148 ************4.5 比较运算符
149 ************4.6 三目运算符
150 ************4.7 位运算符
151 ************4.8 移位运算符
152 */
153 public static void demoCalcSymbol(){
154 /*
155 *4.1 赋值运算符
156 */
157 byte b_a=1,b_b; //java可以在声明变量时直接对变量初始化(即赋值)
158 b_b = b_a; //将b_a的值赋值给b_b 此时b_b也为1;
159 System.out.println("i_b:" + b_b);
160
161 /*
162 *4.2 算术运算符
163 *需注意:算数运算符的优先级
164 */
165 short s_a=1,s_b; //java可以在声明变量时直接对变量初始化(即赋值)
166 s_b = (byte)(s_a + s_a * 5); //因为s_a * 5得到的是一个int型的数据。故需要将其强转为byte
167 System.out.println("s_b:" + s_b);
168
169
170 /*
171 *4.3 自增自减运算符
172 *需注意:a++ ++a 和 a-- --a的区别
173 *(真实工作中不推荐这样的写法,可读性相对比较差)
174 */
175 int i_a=1,i_b,i_c; //java可以在声明变量时直接对变量初始化(即赋值)
176 i_b = i_a++ ; //先赋值i_b ,i_a本身+1 此时i_b为1 i_a为2
177 System.out.println("i_a:" + i_a);
178 System.out.println("i_b:" + i_b);
179
180 i_c = ++i_a; //i_a本身+1 再赋值 此时i_a、i_c均为 3
181 System.out.println("i_a:" + i_a);
182 System.out.println("i_c:" + i_c);
183 /****a-- 和 --a 也一样 这里就不演示了****/
184
185 /*
186 *4.4 逻辑运算符
187 * 与 && 或 || 非 !
188 */
189 boolean b_t = true , b_f = false ;
190 System.out.println("b_t 与 b_f:" + (b_t && b_f));//与
191 System.out.println("b_t 或 b_f:" + (b_t || b_f));//或
192 System.out.println("非b_t:" + (!b_t));//非
193
194
195 /*
196 *4.5 比较运算符
197 * >大于、>=不小于、<小于、 <=不大于 、== 等于 、!= 不等于
198 *较简单不演示
199 */
200
201
202 /*
203 *4.6 三目运算符
204 * 需注意: a?b:c a为真执行b。否则执行c 其中b、c可再多重嵌套如a?(a?b:c):(a?b:c)
205 */
206 int i_d = (b_t && b_f) ? 1 : 0; //(b_t && b_f)为真时 赋值1 否则 0
207 int i_e = (b_t || b_f) ? 1 : 0; //(b_t || b_f)为真时 赋值1 否则 0
208 System.out.println("i_d:" + i_d + " " + "i_e:" + i_e);
209
210 /*
211 *4.7 位运算符
212 *位与运算符用符号&、位或运算符用符号|、位非运算符用符号~、位异或运算符^(相同等于0 不同等于1)
213 *需注意:这里的与或非不同于逻辑运算符的与或非。这里的与或非运算的是位而不是表达式或变量
214 */
215 int i_f = 1, i_g = 0 ;
216 System.out.println("i_f位与i_g:" + (i_f & i_g));//001 & 000 -> 000 -> 0
217 System.out.println("i_f位或i_g:" + (i_f | i_g));//001 | 000 -> 001 -> 1
218 System.out.println("位非i_f:" + (~i_f)); //!001 -> 110 -> 负(010) -> -2
219 System.out.println("i_f位异或i_g:" + (i_f ^ i_g));//^(001 | 000) -> 001 ->1
220
221 /*
222 *4.8 移位运算符
223 *>>有符号右移、<<有符号左移和>>>无符号右移
224 */
225 int i_h = -2 , i_i = 2, i_j = 8;
226 System.out.println("i_h >>> 1:" + (i_h >>> 1));//无符号最高位补0
227 System.out.println("i_i << 2:" + (i_i << 2)); //相当于 * 2的2次方
228 System.out.println("i_h >> 1:" + (i_j >> 3)); //相当于 / 2的3次方
229
230 }
231
232 /*5.语句结构
233 **************5.1 顺序结构
234 **************5.2 分支结构
235 **********************5.2.1 if结构
236 **********************5.2.2 if-else结构
237 **********************5.2.3 if-else if-else结构
238 **********************5.2.4 switch结构
239 **************5.3 循环结构
240 **********************5.3.1 while结构
241 **********************5.3.2 do - while结构
242 **********************5.3.3 for结构
243 **********************5.3.4 foreach结构
244 **************5.4 跳出结构
245 **********************5.4.1 break
246 **********************5.4.2 continue
247 **********************5.4.3 return
248 */
249 public static void demoStatementStruct(){
250 /*
251 *5.1 顺序结构(一个接着一个 too easy 妈妈再也不用担心我的编程了)
252 */
253 System.out.println("按顺序来,这是第一条,接下来是第二条");
254 System.out.println("按顺序来,这是第二条,接下来是第三条......");
255
256 /*
257 *5.2 分支结构
258 */
259 /****5.2.1 if结构*****/
260 boolean b_a = true ;
261 if(b_a){
262 System.out.println("这是if结构!");
263 }
264
265 /****5.2.2 if-else结构*****/
266 boolean b_b = false ;
267 if(b_b){
268 System.out.println("这是if - else结构中的if!");
269 }else{
270 System.out.println("这是if - else结构中的else!");
271 }
272
273 /****5.2.3 if-else if-else结构*****/
274 int i_a = 3;
275 if(i_a == 1){
276 System.out.println("这是if-else if-else结构中的if!");
277 }else if(i_a == 2){
278 System.out.println("这是if-else if-else结构中的第一个else if!");
279
280 }else if(i_a == 3){
281 System.out.println("这是if-else if-else结构中的第二个else if!");
282 }else{
283 System.out.println("这是if-else if-else结构中的else!");
284 }
285
286 /****5.2.4 switch结构*****/
287 /*
288 *需注意有break和没有break的区别
289 */
290 int i_b = 5;
291 switch(i_b){
292 case 0:
293 System.out.println("这是switch结构中的0!");
294 break;
295 case 1:
296 System.out.println("这是switch结构中的1!");
297 case 2:
298 System.out.println("这是switch结构中的2!");
299 case 3:
300 System.out.println("这是switch结构中的3!");
301 case 4:
302 System.out.println("这是switch结构中的4!");
303 case 5:
304 System.out.println("这是switch结构中的5!");
305 case 6:
306 System.out.println("这是switch结构中的6!");
307 break;
308 default:
309 System.out.println("这是switch结构中的defalut!");
310 break;
311 }
312
313 /*
314 *5.3 循环结构
315 */
316
317 /****5.3.1 do - while结构(至少执行1次,先执行再判断条件)*****/
318 int i_c = 1,i=0;
319 do{
320 i++;
321 System.out.println("这是do-while执行的第" + i + "次");
322 }while(i_c > 1);
323
324 /****5.3.2 while结构(有可能不执行 先判断再执行)*****/
325 i = 0;
326 while(i_c > 1){
327 i++;
328 System.out.println("这是while执行的第" + i + "次");
329 }
330
331 /****5.3.3 for结构*****/
332 for(i = 0;i < 2 ;i++){
333 System.out.println("这是for执行的第" + (i+1) + "次");
334 }
335
336 int[]a = {0,1,2,3};
337 /****5.3.4 foreach结构(语法格式比较坑爹 居然用的是for)*****/
338 for(int b :a){
339 System.out.println("这是foreach执行的第" + (b+1) + "次");
340 }
341
342 //结论:
343 /*for跟foreach
344 *1.均可遍历数组或集合
345 *2.使用for时可以读写数据,而使用foreach只能读取
346 *3.foreach可防止访问数组越界问题
347 *4.foreach是for的简化版本,若数据仅仅是读取时推荐使用foreach。它会比for速度快一点
348 */
349
350 /*
351 *5.4 跳出结构
352 */
353
354 /****5.4.1 break结构*****/
355 /*
356 *break关键字 跳出循环往下执行相关语句
357 *如 while(i > 5){
358 i++;
359 if(i ==3){
360 break;
361 }
362 b = b + i;
363 }
364 i = i + 5;
365 当 i = 3时 调出循环,执行 i = i + 5;
366 */
367
368 /****5.4.2 continue结构*****/
369 /*
370 *continue关键字 执行下次循环相关语句
371 *如 while(i > 5){
372 i++;
373 if(i ==3){
374 continue;
375 }
376 b = b + i;
377 }
378 i = i + 5;
379 当 i = 3时 执行下次循环,此时不会执行b = b + i;
380 */
381
382 /****5.4.3 return结构*****/
383 /*
384 *return关键字 执行下次循环相关语句
385 *如 while(i > 5){
386 i++;
387 if(i ==3){
388 return;
389 }
390 b = b + i;
391 }
392 i = i + 5;
393 当 i = 3时 跳出函数,此时不会执行i = i + 5;
394 */
395 }
396
397 /*6.数组
398 **************6.1 一维数组
399 **************6.2 二维数组
400 **************6.3 多维数组
401 */
402 public static void demoArray(){
403 /*
404 *6.1 一维数组
405 */
406
407 /*三种不同定义数组方式*/
408 byte[] b = new byte[10]; //推荐这种 因为更能直接看懂数据类型
409 int a[] = new int[10]; //C语言写法
410 double d[] = {0.1,0.3,0.2,0.4,0.21};//定义时直接初始化
411
412 /*根据数组长度遍历数组*/
413 demoShowArray(d);
414
415 /*调用API类对数组进行升序排序*/
416 showDemo("数组升序排序");
417 Arrays.sort(d);//注意需要导入相关工具包 且只能对数据进行升序排序
418 demoShowArray(d);
419
420 /*调用API类对数组进行降序排序*/
421 showDemo("数组降序排序");
422 Arrays.sort(d);
423 double[] d1 = demoRevArray(d);//反转
424 demoShowArray(d1);
425
426 /*
427 *6.2 二维数组
428 */
429
430 /*多种定义方式 每个维度元素数量不一定一致*/
431 double[][] dd = new double[2][3];
432 double dd1[][] = {{1,2,3},{4,5,6}};
433 double dd2[][] = {{1},{3,2},{4,3,6},{7,8,9,10}}; //定义并初始化
434
435 double[][] dd3 = demoRevArray(dd1);//数组行列转换
436
437 demoShowArray("dd",dd);
438 demoShowArray("dd1",dd1);
439 demoShowArray("dd2",dd2);
440 demoShowArray("dd3",dd3);
441
442 /*
443 *6.3 多维数组 (二维数组扩展 可自行体会)
444 */
445
446 int[][][] i_ar = {{{1,2,3},{4,5,6},{7,8,9}},
447 {{10,11,12},{13,14,15},
448 {16,17,18}},{{19,20,21},{22,23,24},{25,26,27}}
449 };
450 demoShowArray("i_ar",i_ar);
451
452 }
453
454 /*
455 *抽取遍历一维数组方法
456 */
457 public static void demoShowArray(double d[]){
458 for(int i = 0 ; i < d.length ; i++){
459 System.out.println("数组d第" + (i+1) + "个元素为:" + d[i]);
460 }
461
462 }
463
464 /*
465 *抽取遍历二维数组方法
466 */
467 public static void demoShowArray(String strArray,double d[][]){
468 for(int i = 0 ; i < d.length ; i++){
469 for(int j = 0; j < d[i].length ; j++){
470 System.out.println("数组"+strArray+"第" + (i+1)+"行第"+ (j+1)+ "个元素为:" + d[i][j]);
471 }
472 }
473 }
474
475 /*
476 *抽取遍历三维数组方法
477 */
478 public static void demoShowArray(String strArray,int i_ar[][][]){
479 for(int i = 0 ; i < i_ar.length ; i++){
480 for(int j = 0; j < i_ar[i].length ; j++){
481 for(int k = 0; k < i_ar[i][j].length ; k++){
482 System.out.println("数组"+strArray+"第" + (i+1)+"行第"+ (j+1)+ "列第"+(k+1)+"个元素为:" + i_ar[i][j][k]);
483 }
484 }
485 }
486 }
487
488 /*
489 *实现一维数组反转
490 */
491 public static double[] demoRevArray(double d[]){
492 int temp;
493 double[] tmp = new double[d.length];
494 for(int i = 0; i < d.length/2 + 1; i++){
495 tmp[d.length - i - 1] = d[i];
496 tmp[i] = d[d.length - i - 1];
497 }
498 return tmp;
499
500 }
501
502 /*
503 *实现二维数组反转
504 */
505 public static double[][] demoRevArray(double d[][]){
506 int temp;
507 double[][] tmp = new double[d[0].length][d.length];
508 for(int i = 0; i < d.length ; i++){
509 for(int j = 0 ; j < d[i].length; j++){
510 tmp[j][i] = d[i][j];
511 }
512 }
513 return tmp;
514
515 }
516
517 }