第二章
一.注释
package day1; /** * 注释 */ public class Demo1 { // main是java程序的启动入口 /** * eat() 吃饭 */ public static void eat(){ } public static void main(String[] args){ /* 1.单行注释:“//” 快捷键:ctrl+/ 2.多行注释:"/*" 快捷键:ctrl+shift+/ 3.文档注释:"/** " 用于为类、方法、属性、功能进行说明,用于生成api文档 */ System.out.println(); } }
二.标识符
package day1; /** * 标识符 */ public class Demo3 { /* 表示符命名规则: 1. 语法强制要求 大小写字母、数字 _ $ 数字不能开头 不能是关键字,可以包含关键字 区分大小写 不能有空格 长度不限制 2. 约定 类名首字母大写 多个单词 每个单词首字母大写 大驼峰 UserInfo 包名全部小写 com.huawei com.baidu 变量名、方法名首字母小写 userName 小驼峰 常量全部大写 USER_NAME 见名知意 */ public static void main(String[] args) { } }
三.变量
package day1; public class Demo4 { /** * main方法启动程序 * 变量是程序中最基本的存储单元 *使用变量前 先声名,赋值 * 语法:数据类型 变量名 * 使用前(运算)必须赋值的 */ public static void main(String[] args) { int a = 5; int b = 15; System.out.println(a+b); int c; if(b>a){ c=b; }else c=a; System.out.println(c); } }
四.数据类型
1.基本数据类型
使用8个关键字声明的8种数据类型:
整数
byte short int long
浮点
float double
布尔
boolean
字符
char
2.引用数据类型
Java 中除了8中基本数据类型,其他的都是引用数据类型
3.代码
package day1; public class Demo5 { public static void main(String[] args) { /* byte类型 1字节(8bit) -128 ~ 127 */ byte a = 127; /* short类型 2字节 32767 */ short b = 32767; /* int类型 4字节 2147483647 */ int c = 32768; System.out.println(Integer.MAX_VALUE); // Integer是int的包装类 /* long类型 8字节 9223372036854775807 Java中整数 字面量 默认是 int 如果声明long类型, 字面量大于int范围 , 需要在末尾加“L” */ long d =2147483648L; System.out.println(Long.MAX_VALUE); // int e = 0b11; //0b开头表示二进制 // int e = 011; // 0开头表示八进制 int e = 0x11; // 0x开头表示十六进制 System.out.println(e); float f = 10.2F; // 使用float类型要加“f” or "F" double g = 15.32; boolean h = true; char i = 'g'; } }
package day2; public class Demo1 { public static void main(String[] args) { /* 浮点类型默认字面量是double类型 声明float类型时,要在字面量后面+“f” or "F" */ float a = 13.1234567891f; // 4字节 单精度 System.out.println(a); // 结果:13.123457 double b = 15.123456789123456789; // 8字节 双精度 System.out.println(b); //结果:15.123456789123457 /* 布尔类型 boolean 逻辑值 只能用 true 和 false 两个关键字表示 */ boolean c = true; boolean c1 = false; boolean d = a<b; System.out.println(d); // 结果:true } }
package day2; public class Demo2 { public static void main(String[] args) { /* 字符型: char,单个字符 ‘’单引号表示,“” 双引号表示字符串,字符串也是由一个一个的字符组成的 计算机之所以能够显示字符,底层会有一个对照表(编码表) 字符 a ---> 97 --->二进制 Java表示字符时,使用的unicode编码(包括全球各个国家的语言符号,万国码,兼容ASCII码) utf-8 是一种边长的,用于在文件、传输时使用的具体编码表 可以根据编码值的大小,动态变化长度 表示英文字母时,1字节 表示中文字母时,3字节 */ char c ='a'; String s = "abcd"; // 'a' 'b' 'c' 'd' System.out.println(c+0); // 结果:97 .字符型可以参与算数运算 char c1 = '中'; System.out.println(c1+0); // 结果:20013 } }
五.数据类型转换
package day2; import sun.security.util.AuthResources_it; public class Demo3 { public static void main(String[] args) { /* 基本数据类型转换 例外:boolean 不能与其他基本数据类型转换 byte short int long float double char都是数值型 容量小---> 容量大 默认会自动转换 byte,short,char--->int 容量大---> 容量小 默认不能直接转换,但是可以强制类型转换:可能会出现问题:数据溢出,精度降低 容量自小而大: byte,short, char -> int -> long -> float -> double */ byte a = 56; short b = a; short s = 127; byte g = (byte) s; System.out.println(g); long e = 10; //8 64 float f = e; // 4 32 由于小数二进制与整数在底层存储结构不同 4字节float表示范围大于8字节long float h = 10.5f; long i = (long)h; System.out.println(i); // 结果:10,精度降低了 // long j = g + h; 在混合运算时,会自动的把容量小的转换为容量大的 } }
六.运算符
1.算数运算符
知识点
算术运算符 = - * / % ++ --
+加法 数值+数值,数值+字符
+数值+字符串 ,字符串+字符串
-*/ % ++ -- 数值+数值,数值+字符 ++ 自增1 -- 自减1
代码
package day2; public class Demo4 { public static void main(String[] args) { /* 算术运算符 = - * / % ++ -- + 加法 数值+数值,数值+字符 + 字符串连接 数值+字符串 ,字符串+字符串 - * / % ++ -- 数值+数值,数值+字符 ++ 自增1 -- 自减1 */ int a = 10; int b = 5; System.out.println(a + b); // 15 System.out.println(a + 'a'); // 107 System.out.println(a + "abc"); // 10abc System.out.println('a' - a); // 87 int x = 5; x++; //x = x+1; ++x; //x = +1 System.out.println(x); // 7 int y = x++ + 1; // 在混合运算中,++在后,先运算,再++ // int y = ++x + 1; //在混合运算中,++在前,先++,再运算 System.out.println(y); // 8 // System.out.println(y); // 9 } }
2.比较运算符
知识点:
比较运算符 ==,!= > < >= <= ==,!= 数值与数值,数值与字符,逻辑值与逻辑值,引用类型与引用类型
< >= <= 数值与数值, 数值与字符
代码
package day2; public class Demo5 { public static void main(String[] args) { /* 比较运算符 ==,!= > < >= <= ==,!= 数值与数值,数值与字符,逻辑值与逻辑值,引用类型与引用类型 > < >= <= 数值与数值, 数值与字符 */ int a = 10; int b = 5; System.out.println(a>b);// true System.out.println(a<'b'); // 数值与数值,数值与字符 System.out.println(a==b); // false System.out.println(a!=b); // true boolean c = true; boolean d = false; System.out.println(c!=d); //true String s = "abc"; String s1 = "abc"; System.out.println(s==s1); // true System.out.println(s!=s1); // false } }
3.逻辑运算符
package day2; public class Demo6 { public static void main(String[] args) { /* 逻辑运算符 逻辑值与逻辑值 & | ! && || ^ 短路与,短路或,逻辑异或 & | ! ^ 既可以参与逻辑运算,也可以参与位运算 */ int a = 10; int b = 5; int c = 7; //false &,后面的表达式执行 System.out.println(a>b & b<c); // true & true--> true System.out.println(a>b & b>c); // true & false--> false System.out.println(a<b & b>c); // false & false--> false // System.out.println(a<b & ++b>c); // false & false--> false // System.out.println(b);// 6 //false &&,后面的表达式不执行 System.out.println(a>b && b<c); // true && true--> true System.out.println(a>b && b>c); // true && false--> false System.out.println(a<b && b>c); // false && false--> false // System.out.println(a<b && ++b>c); // false && false--> false // System.out.println(b); // 5 //true |,后面的表达式执行 //true ||,后面的表达式不执行 //!取反 System.out.println(!(a<b)); //^逻辑异或 // 相同为false, 不同为true System.out.println(a>b ^ b<c); //true ^ true ->false System.out.println(a>b ^ b>c); //true ^ false ->true System.out.println(a<b ^ b>c); //false ^ false ->false } }
4.赋值运算符
5.条件运算符
代码
package day2; public class Demo7 { public static void main(String[] args) { /* 赋值运算符 = 右边的值赋给左边 注意数据类型 经常写 == 写成 = */ int a = 10; byte b = (byte) a; a+=b; System.out.println(a); short s = 3; // s = s + 2; // s = s(short) + 2(int); s += 2; // 隐式转换 /* 条件运算符 结果 = (表达式)? “成立执行”: ”不成立执行“; */ int score = 75; String res = (score >= 60)? "及格": "不及格"; System.out.println(res); // 及格 } }
6.位运算符
package day2; public class Demo8 { public static void main(String[] args) { /* 位(比特位)运算符 >> 有移 << 左移 >>> 无符号右移 */ int a = 4; // 0000 0100 4 // 0000 1000 8 System.out.println(a << 1); int b = -6; System.out.println(b >> 1); // -3 有符号的移动 符号不变 System.out.println(b >>> 1); // 2147483645 无符号右移,注意负数 移位后高位补0 /* & | ^ ~ */ /* & 0000 0011 3 0000 0100 4 0000 0000 0 */ int x = 3; int y = 4; System.out.println(x & y); // 0 /* & 0000 0100 4 0000 0001 1 0000 0000 0 */ System.out.println((x & 1) == 0);//判断奇偶数 /* | 0000 0011 3 0000 0100 4 0000 0111 7 */ System.out.println(x | y); // 7 /* ^ 0000 0011 3 0000 0100 4 0000 0111 7 */ System.out.println(x ^ y); /* ^ 异或 */ x = x ^ y; // 7 y = x ^ y; // 3 = 7^4 x = x ^ y; // 4 = 7^3 System.out.println(x); // 4 System.out.println(y); // 3 /* ~ 逻辑非 0000 0011 1111 1100 */ System.out.println(~y); // -4 } }
注:优先级
七.控制台
package day2; //导入外部包中的类 import java.util.Scanner; public class Demo9 { public static void main(String[] args) { /* 控制台输入: 在基础语法学习时交互式的向程序中输入内容 */ //创建输入对象 Scanner s = new Scanner(System.in); System.out.println("请输入学号:"); int num = s.nextInt();// 输入一个整数,程序执行nextInt()时,进入阻塞状态,按回车键表示输入完成 System.out.println(num); System.out.println("请输入姓名:"); String name = s.next(); System.out.println(name); } }
八.流程控制语句
1.条件控制语句
if,if...else, if ...else if..., if ...else if...else.
package day2; public class Demo10 { public static void main(String[] args) { /* 流程控制语句 if(条件表达式){条件成立执行} if(条件表达式){条件成立执行} else{条件不成立执行} if(条件表达式){条件成立执行} else if{条件不成立执行} else if{条件不成立执行}... if(条件表达式){条件成立执行} else if{条件不成立执行} else if{条件不成立执行}... else{条件不成立执行} */ int num =5; /*if(num>3){ System.out.println("Demo10.main"); }*/ if(num>2) //if的作用范围只有紧挨着的一行 System.out.println("Demo10.main"); System.out.println("1111"); /* 多路选择 switch 一般用switch能实现的功能用if else 都能实现 区别? 什么时候用if,什么时候用switch 条件比较固定的:一周有七天,一年有12个月 不能进行条件比较 */ // 传入的表达式的值可以是:byte,short int char,枚举类型,String int w = 8; switch (w){ case 1: // case后面只能是字面量,值不能重复的 System.out.println("周一"); break; case 2: System.out.println("周二"); break; case 3: System.out.println("周三"); break; case 4: System.out.println("周四"); break; case 5: System.out.println("周五"); break; case 6: System.out.println("周六"); break; case 7: System.out.println("周天"); break; default: // 所有选项都不匹配,执行default System.out.println("无效日期!!"); } } }
2.循环控制语句
while ,do...while,死循环,for循环
package day3; import java.util.Scanner; public class Demo1 { /* 循环语句 1.while 进入循环之前进行判断,条件成立才会进入循环体,不成立不会进入循环体 while(条件表达式){ 条件成立执行 } 2.do...while 先执行循环体,在进行判断,条件成立再进入循环体。。 do{ 循环体 }while(条件表达式); 3.死循环 while(true){ } */ public static void main(String[] args) { Scanner s = new Scanner(System.in); int i = 0; while (i<5){ System.out.println(i); i++; } System.out.print("i="+i); int age = 0; do { System.out.println("请输入年龄:"); age = s.nextInt(); }while (age>10); while (true) { int num = 111111; int pwd = 123456; int balance = 10000; System.out.println("请输入账号:"); int num1 = s.nextInt(); System.out.println("请输入密码:"); int pwd1 = s.nextInt(); if (num == num1 && pwd == pwd1){ a:while (true) { System.out.println("请输入操作选项:1-存款,2-取款,3-查询余额,4-退出"); int item=s.nextInt(); switch (item){ case 1: System.out.println("请输入存款金额:"); int balance1 = s.nextInt(); balance +=balance1; break; case 2: System.out.println("请输入取款金额:"); int balance2 = s.nextInt(); balance -=balance2; break; case 3: System.out.println(balance); break; case 4: break a; default: System.out.println("输入有误!"); } } }else { System.out.println("输入有误!"); } } } }
package day3; public class Demo2 { public static void main(String[] args) { /* for (1定义变量,2循环条件,4变量赋值){ 3循环体 } 先执行1(只执行一次) 再执行条件判断2(多次) 执行循环体3(多次) 变量赋值4(多次) */ /* for(int i=0; i<5;i+=2){ System.out.println(i); } */ /* int i = 0; for (;i<5;i++){ System.out.println(i); } System.out.println(i); */ /* for (;i<5;){ System.out.println(i); i++; } */ // while (true) 和 for(;;)的区别 /* while(布尔值) 用于执行不知道循环次数 for循环 一般用于执行已知循环次数 */ for (;;){//死循环 System.out.println("abc"); } } }
3. break和continue
package day3; public class Demo3 { public static void main(String[] args) { /* break 在switch中,用于结束switch循环 continue 用于结束本轮循环 */ out:for (int i = 0; i < 10; i++) { for (int j = 0;j<10; j++) { if (j==5){ break out; } System.out.println("j="+j); } System.out.println("i="+i); // 0 1 2 3 4 } for (int i = 0; i < 10; i++) { if (i==6){ continue; } System.out.println(i); } } }
4.循环嵌套
package day3; public class Demo4 { public static void main(String[] args) { /* 循环嵌套 循环里面或者外面套一个或多个循环 4*4 5*5 6*6 **** **** **** **** */ int num = 4; for (int i = 0; i <num; i++) {// 外层循环控制行数 for (int j = 0 ;j< num;j++) { // 内层循环控制列数 System.out.print("*"+"\t"); } System.out.println();//内层循环结束,换行 } /* * * * * * * * * * * 乘法口诀表 * * * * * * * * * * */ for (int i = 0; i < 5; i++) { for (int j = 0;j<i;j++){ System.out.print("*"+"\t"); } System.out.println(); } for (int i = 1; i <= 9; i++) { for (int j = 1;j<=i;j++){ System.out.print(j+"*"+i+"="+j * i+"\t"); } System.out.println(); } for (int i = 4; i >0; i--) { for (int j = i;j>0;j--){ System.out.print("*"+"\t"); } System.out.println(); } } }
5.方法的定义和调用
package day3; /* 基本语法展示类 */ public class Demo5 { /* 方法的定义和调用 方法语法: [访问权限修饰符,修饰符][返回值类]方法名称(参数类型参数名称){ 方法体 [return结果] } 方法的调用 */ public static void main(String[] args) { Demo5.print(); // 方法的调用,类名。方法名()(必须是static关键字修饰) Demo5.print1(8); int x =Demo5.max(8,6); System.out.println(x); } public static void print(){ for (int i = 0; i < 5; i++) { for (int j = 0;j<i;j++){ System.out.print("*"+"\t"); } System.out.println(); } } public static void print1(int num){ for (int i = 1; i <= num; i++) { for (int j = 1;j<i;j++){ System.out.print("*"+"\t"); } System.out.println(); } } public static int max(int a,int b){ return a>b?a:b; } }