变量名(标识符 )的命名规范
1.变量由数字,字母,下划线,¥来组成
2.不能以数字开头
3.变量名满足驼峰式写法
大驼峰:每个单词的首字母都大写
小驼峰:每一i个单词首字母小写,剩余的其 他单词首字母都大写
-
变量的类型测试
-
重点:
-
八大数据类型对应的字节数及中英文
-
char类型的运算
-
float类型可以由哪些类型表示
-
隐式转换(自动),手动去强制转换
-
不兼容的类型:从int转换到byte可能会有损失(内存泄漏)
-
public class Demo6{ public static void main(String[] args ) { byte a=127; //127默认是int byte b=(byte)128; //byte[-128,127] ,手动强制转换 Short c=32767; //不兼容的类型:从int转换到short可以会有损失 short d=(short)-32769; //short[-32768,32767] //数据类型的双边溢出 int x=100; long y=2147483650L; //过大的整数 //*当值超过int最大值时,赋值给long时必须加L; //当值在int范围时,赋值给long时可以不用加L; //自动/隐式转换;小范围【自动】向大范围转换 byte aa=10; short bb=aa; int cc=aa; short dd=aa; /*java中当 存在两个变量之间赋值时需要看数据类型 大类型 变量=小类型的值;//自动转换 小类型 变量=大类型的值;//出现损失值 */ short f=10; short h=f+1; //short h=(short)f+1; 出错:1是int,f是short,求和后的数据类型也应该是int int h=f+1; } }
字符类型的相关操作
public class Demo7{ public static void main (String[] args){ //float用法 //浮点型默认double类型 //double八大基本类型中范围最大的 System.out.println(2); //布尔类型boolean true false System.out.println(true+1);//错误,二元运算符Boolean不能参与转换 //精度损失 int test=(int)18.9; //取整(不会四舍五入) //内存溢出 short test2=(short)32768; // } }
运算符
/**算数运算符**/ public class Demo8{ public static void main(String[] args){ //加法+ //2.减法- //3.乘法* System.out.println(10*10*10); //4.除法/(Java默认是整除) System.out.println(9/2);//4 System.out.println(9.0/2);//4.5 //5.重点:求余数(取模%) System.out.println(8%3);//余数为2 int score=678; //获取个位,十位,百位 int bai=score/100; int shi=score/10%10; int ge= score%10; //获取1234 int s=1234; int qian=s/1000; int bai=s/100%10; int shi=s/10%10; int ge=s%10 } }
自增运算符
public class Demo{ publiic static void man(String[] args){ int a=1; a=a+1; a++; ++a; //整点:当++a,a++单独使用时,效果都是一样的 System.out.println(a); int b=1; Systeem.out.println(b); //++放在前:先加后参与运算 //出题:计算出xyz的值 int x=10; int y=5; //int z=x++ *10 /--y; //25 //int q=x++% 3- --y; //-3 int w=x++% 3- --y+ ++x; //9 //考点:自增运算结束后元素就会会自增/自减 } }
关系运算符
public class Demo{ public static voi main(String[] args){ //1.关系运算符(结果永远是Boolean) System.out println(3>5); //false System.out.println(3<5); //true 重点:如何判断两个值是否相等 //Java中=表示赋值 /*1.基本数据类型(八种)通过==比较数值 2.引用数据类型字符串==比较的是地址 */ String str="abc"; //字符串常量 String str2="abc"; String str3= new String("abc"); System.out.println(str==str2);//地址相同 System.out.println(str==str3); //地址不相同 //若只想比较字符串中的内容,不管地址 System.out.println(str.equals(str3));//true } }
逻辑运算符
public class Demo{ public static void main(String[] args){ //逻辑运算符 与或非 //事件1 事件2 独立的结果都是Boolean /* 与& 事件1和事件2同时满足时从才成立 & 判断两次 && (短路与):当事件1为false时,事件2将不会执行 */ //1.与事件 (考点:多项选择) System.out.println(3>5 &5<6); System.out.println(3>5 &10/0 >8); System.out.println(3>5 &&10/0 >8); //false /* 或 事件1和事件2只要有一个处理则结果就是true | :判断两次 ||:当事件1为true时,则事件2就不会执行 */ /* 非 非真即假,非假即真 ! */ System.out,println(!true); //判断闰年的表达式 yaer%4==0 && year %100!=0|| yaer% 400==0; } }
赋值运算符
public class Demo{ public static voia main(String[] args){ //面试题: short num=10; num=num+1; num+=1; //请问以上代码中那句会出错,为什么? } } 计算机中常见编码方式的计算 public class Demo{ public static void main(String[] args){ byte a=+3; //1.源码 0000 0011 //-3源码 |-3|=3 0000 0011---1000 0011 //规定最高位(最左边的)默认为符号为0:整数1:负数 //源码对程序员是友好的,对于计算机不能参与运算 //计算机中的数值一律采用:补码存储并计算 2.反码(将二进制码按位取反) //正数:源码=反码=补码 /* -3反码 1000 0011 反码 0111 1100 */ } }
位运算符
public class Demo{ public static void main(String[] args){ *//位运算符 //byte 2 & 3 &按位与 2二进制 0000 0010 3二进制 0000 0011 -----------&-----两个同时为1时才会是1,其余都为0 0000 0010 //2.byte 2| 3 |按位或 2二进制 0000 0010 3二进制 0000 0011 -----------&-----只要有1就为1,两个都为0才会为0 0000 0010 //byte 2 ^ 5 ^异或 2二进制 0000 0010 5二进制 0000 0101 -----------^--------只要两个不一样就为1,一样为0 0000 0111 System.out.println(2^5); //异或特殊规则 z=x^y z^y 就可以获取到x /* 正文内容:1314 私钥:666 密文:正文内容 ^ 私钥 解密:密文^私钥 */ 5.左移 << 4<<2 4补码: 0000 0100 -------------<<---- 0001 0000 规律:num << n num *2的n 次方 面试:如何高效计算3*8 17*16 3<< 3 0000 0011 0001 1000 重点掌握 右移>> 10>>1 10补码: 0000 1010 -------------->>--- 0000 0101 规律:num>>n num/2的N次方 面试:容器容量capacity=10,现在想要扩容到以前的2倍 capacity<<1 扩容2倍 capacity=capacity>>1 int capacity=10; System.out,println() } }
一元运算符
public class Demo{ public static void main(String[] args){ //一元运算符 ++ -- ! // 二元运算符 + - * / % ~ & | && || /*三元运算符 语法:条件表达式?事件:事件 } 含义:当条件为真时,执行事件1; 当条件为假时,执行事件2; */ //找最大值 int a=10; int b=32; int max=a>b?a:b; int min=a<b?a:b; System.out.println("最大值:"+max); //用于打印输出 } //键盘输入的获取Scanner扫描器 import java.util.Scanner;//扫描工具类 import java.lang.Math; //语言包 数学工具包 public class Demo{ public static void main(String[] args){ //System.in 键盘输入流(字节流) Scanner sc= new Scanner(System.in); //扫描控制台的键盘输入 String str=sc.next(;); //会产生系统的阻塞(等待用户键盘输入,回车键释放阻塞) (next()只要遇到空格就结束了) System.out.println("键盘输入:"+str); String str2=sc,nextLine(); //一次读一行\n System.out.pritnln("请输入整数"); int num=sc.nextInt(); short num2=sc.nextShort(); System,out,println("整数:" +num); //java.util.InputMismatchException 输入不匹配异常 //重点:Scanner中没有提供sc.nextChar() //字符串:有多个单个字符组合成的一段有序文本 //通过键盘获取字符 String str=sc.nextLine(); char ch=str.charAt(0); System,out.println("获取的字符:"+ ch) /* String str="shanghai2019上海" sc.nextLine.charAt(index);//字符串的索引*/ } }
Scanner使用
1.每次键盘输入都会产生阻塞,回车键释放阻塞
2.八大基本数据类型除char都有自己的方法
scanner.nextXxx();
3.键盘如何获取单个键盘
Java程序:流程控制、
//选择控制:单分支选择 /*单分支选择语法 if(条件){ //条件成立时执行的代码 } else{ //条件不成立时执行的代码 } //1.判断一个数是偶数还是奇数 int num=13; if(num%2==0){ System.out.prinln("这个数是偶数" +num); } else{ System.out.println("这个数是奇数"); } //2.键盘输入一个数,判断是奇数还是偶数 import java,util.Scanner; Scanner sc=new Scanner(System.in); System.out.println("请输入一个数:"); int number= sc.nextInt(); //会产生阻塞 //如何判断是否闰年,四年一闰且百年不闰,或者四百年再闰 if(number%4==0 and number100!=0 or number%400==0){ System.out.println("是闰年"+number); } else{ System.out.println("不是闰年"+number); } //单分支的特殊情况 //1.if..elase 可以与三元运算符相互转换 int a; int b=20; if(b%4==0){ a=1; } else{ a=0; //等效与 int x= a%4==0?1:0; } //特殊的语法中有if
-
多分支选择
if(条件1){
//条件1成立后执行
}else if(条件2){
//条件2成立后执行
}else if(条件3){
//条件3成立后执行
}else {
//以上条件都不满足执行
}
if(条件1){ //条件1成立后执行 }else if(条件2){ //条件2成立后执行 }else if(条件3){ //条件3成立后执行 }else { //以上条件都不满足执行 }
switch开关选择语句
-
语法
开关选择语句 * switch(条件表达式){ * case 常囊1: * 执行条件1成立后的代码; * break; * case 常囊2: * 执行条件2成立后的代码; * break; * ..... * default: * 所有case都不满足时才会执行; * break; * } * 考点: * 1.switch(表达式):表达式的可用类型 * 基本类型:byte short int char (不可用:long boolean float double) * 引用类型:String enum枚举 * * bug: * 1.java.lang.IllegalStateException:Scanner closed Scanner在使用前被关闭了 * 2.Java.lang.StringIndexOutOfBoundsException:String index
案例
eg1:
public class switch01 { public static void main(String[ ]args) { System.out.println("欢迎进入图书管理系统"); Scanner scanner=new Scanner(System.in); int num=scanner.nextInt(); switch(num) { case 1: System.out.println("登录"); break; case 2: System.out.println("注册"); break; case 3: System.out.println("退出(退出系统或程序)"); System.exit(0); break; } scanner.close(); } }
Scanner
Scanner疑问解答 1.sc.nextLine();使用时尽量都在一起使用,中间不要执行其他nextXxx() 若使用了就会自动释放阻塞,导致字符串内容为0】:若要不报错则需要重新创建Scanner
default注意点:
/*default*/ public class Demo1{ public static void main(String[] args){ int i=10; in y=4; switch(y){ case 1: System.out.println(111); i++; break; default: System.out.println(000); i++; case 2: System.out.println(222); i*=3; case 3: System.out.println(333); i%=4; break; } System.out.println(i); } }
循环:
1.作用:将重复的操作反复在一个地方执行
减少代码的冗余,提高可读性
3.分类:
while 当型循环
do....while 直到型循环
for循环(使用最多的循环)
4.while语法
while(循环条件){ 需要每次都执行的重复操作 } //如何控制循环次数 int i=1; while(i<=10){ System.out.println("000") i+=1;//i++; }
案例1 求1+2+3....+100?
public class Demo2{ public static void main(String[] args){ int i=1; int mun=0; while(i<=101){ num=num+i; i++; System.out.println(num); } } }