java 基础提炼
2021-01-23 11:15
标签:流程控制 long div ips default 符号 区分 导致 改变 一、标识符:凡是自己命名的都是标识符 标识符的定义规则: java中名称的命名规范: 二、计算机中的进制: 三、变量:内存中的一个存储区块,用于内存中保存数据,包含变量类型 变量名 和存储值。 java中的数据类型: 变量的使用: 1个字符 = 2字节
常在判断 or 循环结构中使用
基本本数据类型之间的运算规则 (这里讨论的基本数据运算,不包含Boolean) 1.自动提升:小的范围 和 大范围的做运算时 用大范围的数据类型来接收: byte、short、char --> int --> long-->float --> double String类型变量的使用 四、运算: 算术运算符( + - * / % ++ -- ....) tips:前++ 和 后++ 的具体区别,可以查看:https://www.cnblogs.com/lixiuming521125/p/10865392.html 比较运算: == != = 逻辑运算:只能适用于boolean的变量 (相关扩展:https://www.cnblogs.com/lixiuming521125/p/12053966.html) 位运算:操作的是整型的数据 面试题:最高效的计算 2*8 2
三元运算符:(表达式)? 表达式一:表达式二 五、流程控制: 分支结构:1.if else 分支结构:2.switch case switch("表达式"){ for 循环 while 循环 do while 循环: break和continue 关键字的使用 for-for 循环 9 9 乘法表 ,100以内质数... java 基础提炼 标签:流程控制 long div ips default 符号 区分 导致 改变 原文地址:https://www.cnblogs.com/lixiuming521125/p/12882774.html
1 public static void testBinerary() {
2 int num1 = 0b110;
3 int num2 = 110;
4 int num3 = 0127;
5 int num4 = 0x110A;
6 System.out.println("num1="+num1);//打印出来的都是10进制
7 System.out.println("num2="+num2);
8 System.out.println("num3="+num3);
9 System.out.println("num4="+num4);
10 //自动转换
11 int i= 60;
12 String s1 = Integer.toHexString(i);
13 String s2 = Integer.toBinaryString(i);
14 System.out.println(s1+","+s2);
15
16 }
1 /**
2 *整型变量的使用;
3 *byte = 8bit 可以表示2^8个数 -128 ~127;1字节
4 *short 可以表示2^16个数;2字节
5 *int 可以表示2^32个数;4个字节
6 *long 可以表示2^64个数 8个字节,必须以大写的L/l的结尾;
7 */
8 public void testInteger() {
9 //byte 的范围 -128 ~127
10 byte b1 = 1;
11 byte b2 = 127;
12 //long变量 必须以大写的L/l的结尾
13 long l = 34444444444L;
14 }
15
16 /**
17 *浮点型(带小数点的):
18 * float:4字节 7位有效数字
19 * double:8字节
20 */
21 public void testFloat() {
22 double d1 = 123.1;
23 System.out.println(d1+1);
24 //float 定义 后面加f/F结尾
25 float f1 = 123.1f;
26 System.out.println(f1);
27 }
28 /**
29 *字符型:
30 *
31 *
byte short char 之间做运算或者跟跟自身做运算 ,都需要用int接收
2.强制类型转换:自动类型提升的逆运算;可能会导致精度损失
需要使用强转符:()
3.整型常量 默认是int 浮点型常量默认是 double; 1 /**
2 * 自动类型提升
3 */
4 public static void testOperation() {
5 byte b1 = 2;
6 int i1 = 3;
7 int res = b1 + i1;
8 char c1 = 97;
9 short s = 1;
10 // char res2 = c1 +s; //char + short 运算
11 // res2 = b1 +c1;//char + byte 运算
12 // char res2 = b1 +s;//short + byte 运算
13 System.out.println(res);
14 }
15 /**
16 *强制类型转换
17 */
18 public static void testConversion() {
19 double d1 = 12.3;
20 int i = (int)d1;
21 System.out.println(i);
22 }
23
24 /**
25 *整型常量 默认是int 浮点型常量默认是 double;
26 *
27 */
28 public static void testSpecial() {
29 byte b1 = 12;
30 //byte res = b1+1;//报错:1是int ,所以这里需要用int接收
31 float f = 1.1f;
32 //float res2 = f+1.2;//报错:1.2默认是double,double的范围比float大不能自动类型提升;
33 }
1 public static void testOperation() {
2 boolean b = true;
3 String s = "s";
4 System.out.println(s+b);//这里的“+”是连接运算;
5 char c=‘a‘;
6 int num = 100;
7 String str = "hello";
8 System.out.println(c+num+str);//c+num 是加法运算,后面是连接运算
9 System.out.println(c+str+num);//c+str 是连接运算,后面是连接运算
10 System.out.println(c+(num+str));//(num+str)连接,都是连接
11 System.out.println((c+num)+str);//c+num 是加法运算,后面是连接运算
12 System.out.println(str+c+num);//都是连接
13 System.out.println("*"+"\t"+"*");
14 System.out.println("*"+("\t"+"*"));
15 System.out.println(‘*‘+‘\t‘+"*");
16 System.out.println(‘*‘+(‘\t‘+"*"));
17 //String strw = 123;//声明String类型变量时,使用“”
18 String str1 = 123+"";
19 //int num1 = (int)str1;//不能强转int Integer.parseint(str1)
20 }
1 public static void testAri() {
2 //除法
3 int num1 = 12;
4 int num2 = 5;
5 System.out.println(num1/5);
6 double d1 = 12;
7 double d2 = 5;
8 double res = d1/d2;
9 double res1 = num1/num2+0.0;
10 double res2 = (0.0+num1)/num2;
11 System.out.println("res:"+res);
12 System.out.println("res1:"+res1);
13 System.out.println("res2:"+res2);
14
15 //++运算,前++,先自增,再运算;后++,先运算后自增1;
16 int a1 = 10;
17 int b1 = ++a1;
18 System.out.println("a1:"+a1+",b1:"+b1);
19
20 int a2 = 10;
21 int b2 = a2++;
22 System.out.println("a2:"+a2+",b2:"+b2);
23
24 short s1 = 10;
25 s1++; //s1 = (short)(s1+1);++不会改变自身数据类型
26
27 byte bb1 = 127;
28 bb1++;
29 System.out.println("bb1:"+bb1);
30
31
32 //取余,结果的符号与被摩数的符号一样
33 int m1 = 12;//被模数
34 int n1 = 5;//模数
35 System.out.println("m1 % n1 = "+ m1%n1);
36
37 int m2 = -12;//被模数
38 int n2 = 5;//模数
39 System.out.println("m2 % n2 = "+ m2%n2);
40
41 int m3 = -12;//被模数
42 int n3 = -5;//模数
43 System.out.println("m3 % n3 = "+ m3%n3);
44
45 int m4 = 12;//被模数
46 int n4 = -5;//模数
47 System.out.println("m4 % n4 = "+ m4%n4);
48 }
赋值运算:= +=,-+,/+,%= 1 public static void testSetValue() {
2 //赋值符号
3 int i1 = 10;
4 int j1 = 10;
5
6 //连接赋值;
7 int i2,j2;
8 i2= j2 =10;
9
10 int i3,j3 =20;
11
12 int num1 =10;
13 num1 +=2;//num1 = num1+2
14 System.out.println(num1);
15
16 short s1 = 10;
17 s1+=2;//+= 不能改变变量的数据类型
18 System.out.println(s1);
19
20 int i = 1;
21 i *= 0.1;
22 System.out.println("i:"+i);//i=0
23
24 int m = 2;
25 int n = 3;
26 n *= m++;
27 System.out.println("m:"+m);
28 System.out.println("n:"+n);
29
30 int nn = 10;
31 nn += nn++ +(++nn);// nn = nn+(nn++ +(++nn))
32 System.out.println(nn);
33
34
35 }
1 public static void testLogic() {
2 //区分& 和 &&
3 //相同点:& 和 && 的运算结果相同;当符号左边是true时,二者都会执行右边运算;
4 //不同点:当符号左边是false是,& 还是执行右边运算, && 不执行;
5 boolean b1 = false;
6 int num1 = 10;
7 if(b1 &(num1 ++>0)) {
8 System.out.println("if");
9
10 }else {
11 System.out.println("else");
12 }
13 System.out.println(num1);
14 int num2 = 10;
15 if(b1 &&(num2 ++>0)) {
16 System.out.println("if");
17
18 }else {
19 System.out.println("else");
20 }
21 System.out.println(num2);
22
23 // 区分: | 和 ||
24 //相同点:| 和 || 的运算结果相同;当符号左边是false时,二者都会执行右边运算;
25 //不同点:当符号左边是true是,| 还是执行右边运算, || 不执行;
26 boolean b2 = true;
27 int num3 = 10;
28 if(b2 |(num3 ++>0)) {
29 System.out.println("if");
30
31 }else {
32 System.out.println("else");
33 }
34 System.out.println(num3);
35 int num4 = 10;
36 if(b2 ||(num4 ++>0)) {
37 System.out.println("if");
38
39 }else {
40 System.out.println("else");
41 }
42 System.out.println(num4);
43 }
44
1 public static void testBitAri() {
2 int i = 21;
3 System.out.println("i//21*2^2
4 System.out.println("i>>:"+(i>>2));
5
6 int m = 12;
7 int n = 5;
8 System.out.println("m&n:"+(m&n));
9 System.out.println("m|n:"+(m|n));
10 System.out.println("m|n:"+(m^n));
11
12 //交换两个变量的方式
13 //方式一:
14 int num1 = 10;
15 int num2 = 20;
16 int temp = num1;
17 num1 = num2 ;
18 num2 = temp;
19 System.out.println("num1:"+num1+",num2:"+num2);
20 //方式二:
21 num1 = num1+num2;
22 num2 = num1-num2;
23 num1 = num1-num2;
24 System.out.println("num1:"+num1+",num2:"+num2);
25 //方式三: m =(m^n)^n
26
27 num1 = num1^num2;
28 num2 = num1^num2;
29 num1 = num1^num2;
30 System.out.println("num1:"+num1+",num2:"+num2);
31 }
1 public static void testThreeAri() {
2 //获取两个数的较大值
3 int m= 12;
4 int n = 5;
5 int max = m>n?m:n;
6 String res = m>n?"m 大":(m==n?"相等":"n大");
7 System.out.println(max);
8 System.out.println(res);
9
10 if(m>n) {
11 System.out.println("m大");
12 }else {
13
14
15 }
16 }
if(条件表达式){
}
if(条件表达式){
}else{
}
if(条件表达式){
}else if{
}....
else{
}
case 常量一:
执行语句
///break;
case 常量二:
执行语句;
///break;
...
default:
执行语句;
}
switch(表达式) 这个表达式只能是如下6种数据类型: byte short int char int 枚举 String
case后只能加常量;
break 关键字是可选的;
default:相当于if-else 中的else default是可选的;而且位置是可变的(比如:default可以放在第一个case之前);
说明:如果switch中的多个case的执行语句相同,则可以考虑合并; 1 public static void testSwitchCase() {
2 int num = 4;
3 switch (num) {
4 case 1:
5 System.out.println("one");
6 break;
7 case 2:
8 System.out.println("two");
9 break;
10 case 3:
11 System.out.println("three");
12 break;
13 default:
14 System.out.println("其他");
15 }
16
17 //case 0 到case5 合并了;()
18 int score = 78;
19 switch (score/10) {
20 case 0:
21 case 1:
22 case 2:
23 case 3:
24 case 4:
25 case 5:
26 System.out.println("不合格!");
27 break;
28 case 6:
29 case 7:
30 case 8:
31 case 9:
32 case 10:
33 System.out.println("合格!");
34 break;
35
36 }
37
38 }
循环结构的4个要素:
1.初始化条件;
2.循环条件(boolean);
3.循环体;
4.迭代条件
for循环的结构
for(1;2;4){
3
}
for 的无限循环: for(;;) 1 public static void testFor() {
2 Scanner scanner = new Scanner(System.in);
3 System.out.println("请输入第一个数:");
4 int num1 = scanner.nextInt();
5 System.out.println("请输入第二个数:");
6 int num2 = scanner.nextInt();
7 int min = num1>num2?num2:num1;
8 int max = num1>num2?num1:num2;
9 for(int i=min;i>=1;i--) {
10 if(num1%i ==0 && num2%i == 0) {
11 System.out.println("他们之间的最大公约数是:"+i);
12 break;
13 }
14 }
15 for(int i=max;i){
16 if(i%min ==0 && i%max==0) {
17 System.out.println("他们之间最小公倍数是:"+i);
18 break;
19 }
20 }
21 }
循环结构的4个要素:
1.初始化条件;
2.循环条件(boolean)
3.循环体
4.迭代条件
while循环的结构
1
while(2){
3
4
}
while 无限循环 : while(true)
for循环和while循环可以相互转换1 public static void testWhile() {
2 int i=1;
3 while(i) {
4 if(i%2==0) {
5 System.out.println(i);
6 }
7 i++;
8 }
9 }
循环结构的4个要素:
1.初始化条件;
2.循环条件(boolean)
3.循环体
4.迭代条件
1
do({
3;
4;
}while(2)
do while至少会执行一次循环体 1 public static void testDoWhile() {
2 int i=1;
3 do {
4 if(i%2==0) {
5 System.out.println(i);
6 }
7 i++;
8 }while(i);
9
10
11 }
break:switch- case ;循环结构中使用(结束当前循环)
continue: 循环结构中使用(结束当次循环)
关键字后面不能有执行语句; 1 public static void testBreakContinue() {
2 for(int i=1;i) {
3 if(i % 4 ==0) {
4 System.out.println(i);
5 //break; 1,2,3
6 //continue 1 2 3 5 6 7 9
7 }
8 }
9 }
10
11 public static void testBreakContinue1() {
12 label:for(int i=1;i) {
13 for(int j=1;j) {
14 if( j%4 ==0) {
15 //break;//结束当前for循环
16 //break label;//结束标识的层的循环
17 continue label;//结束指定标识的一层循环结构;
18 }
19 System.out.println(j);
20 }
21 }
22 }
1 public static void testForFor1() {
2 for(int i=1;i) {
3 for(int j=1;j) {
4 System.out.print("*");
5 }
6 System.out.print("\n");
7 }
8
9
10 }
11 //9 9 乘法表
12 public static void testForFor2() {
13 for(int i=1;i) {
14 for(int j=1;j) {
15 System.out.print(i+"*"+j+"="+i*j+" ");
16 }
17 System.out.print("\n");
18 }
19 }
20
21 public static void testForFor() {
22 for(int i=2;i) {
23 boolean flag = false;
24 for(int j=2;j//普通算法 高级算法:for(int j=2;j
25 if(i % j == 0 ) {
26 flag = true;
27 break;
28 }
29 }
30 if(!flag) {
31 System.out.println("100以内的质数:"+i);
32 }
33
34 }
35 }
36
37 public static void testForFor3() {
38 label:for(int i=2;i) {
39 for(int j=2;j//普通算法 高级算法:for(int j=2;j
40 if(i % j == 0 ) {
41 continue label;
42 }
43 }
44 System.out.println("100以内的质数:"+i);
45
46 }
47 }
下一篇:机器学习各个算法的应用场景