首页
关于
友链
Search
1
java project 客户管理信息软件
129 阅读
2
java学习笔记10
114 阅读
3
java学习笔记12
109 阅读
4
java学习笔记1
103 阅读
5
java学习笔记11
98 阅读
默认分类
程序设计
java
vue前端
java学习笔记
java练习
java工程
登录
Search
标签搜索
java
java基础
学习笔记
练习
类
java进阶
数组
循环
vue
工程
helloworld
注释
关键字
变量
基本数据类型
选择
String
进制
运算符
Scanner
bandao
累计撰写
19
篇文章
累计收到
1
条评论
首页
栏目
默认分类
程序设计
java
vue前端
java学习笔记
java练习
java工程
页面
关于
友链
搜索到
19
篇与
的结果
2021-11-29
java project 家庭收支记账软件
{music id="1818128141" color="#1989fa" autoplay="autoplay"/}家庭收支记账软件1. 自己编写的java文件FamilyAccount.java//FamilyAccount.java public class FamilyAccount { public static void main(String[] args) { boolean isFlag = true; String details = "收支\t账户金额\t收支金额\t说 明\n"; int balance = 10000; while (isFlag){ System.out.println("-----------------家庭收支记账软件-----------------\n"); System.out.println(" 1 收支明细"); System.out.println(" 2 登记收入"); System.out.println(" 3 登记支出"); System.out.println(" 4 退 出\n"); System.out.print(" 请选择(1-4):"); //获取输入 char selection = Utility.readMenuSelection(); switch (selection){ case '1': //1.收支明细 System.out.println("-----------------当前收支明细记录-----------------"); System.out.println(details); System.out.println("--------------------------------------------------"); break; case '2': //2.登记收入 System.out.print("本次收入金额:"); int addMoney = Utility.readNumber(); System.out.print("本次收入说明:"); String addInfo = Utility.readString(); balance += addMoney; details += ("收入\t" + balance + "\t\t" + addMoney + "\t\t" + addInfo + "\n"); System.out.println("---------------------登记完成---------------------\n"); break; case '3': //3.登记支出 System.out.print("本次支出金额:"); int minusMoney = Utility.readNumber(); System.out.print("本次支出说明:"); String minusInfo = Utility.readString(); if (balance >= minusMoney){ balance -= minusMoney; details += ("支出\t" + balance + "\t\t" + minusMoney + "\t\t" + minusInfo + "\n"); }else { System.out.println("钱不够,付不了~~~"); } System.out.println("---------------------登记完成---------------------\n"); break; case '4': //4.退 出 System.out.print("确认是否退出(Y/N):"); char isExit = Utility.readConfirmSelection(); if (isExit == 'Y'){ isFlag = false; } break; } } } }2. 别人写好的工具类Utility.java//Utility.java import java.util.Scanner; /** Utility工具类: 将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。 */ public class Utility { private static Scanner scanner = new Scanner(System.in); /** 用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。 */ public static char readMenuSelection() { char c; for (; ; ) { String str = readKeyBoard(1); c = str.charAt(0); if (c != '1' && c != '2' && c != '3' && c != '4') { System.out.print("选择错误,请重新输入:"); } else break; } return c; } /** 用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。 */ public static int readNumber() { int n; for (; ; ) { String str = readKeyBoard(4); try { n = Integer.parseInt(str); break; } catch (NumberFormatException e) { System.out.print("数字输入错误,请重新输入:"); } } return n; } /** 用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。 */ public static String readString() { String str = readKeyBoard(8); return str; } /** 用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。 */ public static char readConfirmSelection() { char c; for (; ; ) { String str = readKeyBoard(1).toUpperCase(); c = str.charAt(0); if (c == 'Y' || c == 'N') { break; } else { System.out.print("选择错误,请重新输入:"); } } return c; } private static String readKeyBoard(int limit) { String line = ""; while (scanner.hasNext()) { line = scanner.nextLine(); if (line.length() < 1 || line.length() > limit) { System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:"); continue; } break; } return line; } }
2021年11月29日
51 阅读
0 评论
0 点赞
2021-11-29
java学习笔记6
{music id="1861194866" color="#1989fa" autoplay="autoplay"/}1. 嵌套循环的使用1. 定义将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环2. java代码public class ForForTest { public static void main(String[] args) { for (int i = 0; i < 5; i++) { System.out.print("*"); } System.out.println('\n'); for (int j = 0; j < 4; j++) { for (int i = 0; i < 5; i++) { System.out.print("*"); } System.out.println(); } /* i(行号) j(*的个数) * 1 1 ** 2 2 *** 3 3 **** 4 4 ***** 5 5 */ for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { System.out.print("*"); } System.out.println(); } /* i(行号) j(*的个数) 规律:i + j = 5 换句话说:j = 5 - i; **** 1 4 *** 2 3 ** 3 2 * 4 1 */ for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { System.out.print("*"); } System.out.println(); } } }3. Tip内层遍历一遍,相当于外层循环一次假设外层循环执行m次,内层循环执行n次。 此时内层循环的循环体一共执行了m * n次4. 九九乘法表public class NineNineTable { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "*" + j + "=" + (i * j) + "\t"); } System.out.println(); } } }2. break,continue,label的基本使用1. break,continue的基本使用break和continue使用范围循环中使用的作用(不同点)相同点break:switch-case 循环结构中结束当前循环关键字后面不能声明执行语句continue:循环结构中结束当次循环关键字后面不能声明执行语句2. java代码public class BreakContinueTest { public static void main(String[] args) { for(int i = 1;i <= 10;i++){ if(i % 4 == 0){ break;//123 //continue;//123567910 //System.out.println("今晚迪丽热巴要约我!!!"); } System.out.print(i); } System.out.println(); for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 10; j++) { if(j % 4 == 0){ break; } System.out.print(j); } System.out.println(); } label:for(int i = 1;i <= 4;i++){ for(int j = 1;j <= 10;j++){ if(j % 4 == 0){ //break label;//结束指定标识的一层循环结构 continue label;//结束指定标识的一层循环结构当次循环 } System.out.print(j); } System.out.println(); } } }2. 求100000以内的所有质数的输出(逐渐优化)1. 方法1public class PrimeNumberTest { public static void main(String[] args) { boolean isFlag = true; for (int i = 2; i <= 100; i++) { //遍历100以内的自然数 for (int j = 2; j < i; j++) { //j:被i去除 if (i % j == 0){ //i被j除尽 isFlag = false; break; } } if(isFlag == true){ System.out.println(i); } isFlag = true; //重置isFlag } } }2.方法2public class PrimeNumberTest1 { public static void main(String[] args) { boolean isFlag = true; int count = 0;//记录质数的个数 long start = System.currentTimeMillis();//时间戳 for (int i = 2; i <= 100000; i++) { //遍历100以内的自然数 for (int j = 2; j < Math.sqrt(i); j++) { //j:被i去除 if (i % j == 0){ //i被j除尽 isFlag = false; break; } } if(isFlag == true){ //System.out.println(i); count++; } isFlag = true; //重置isFlag } long end = System.currentTimeMillis();//时间戳 System.out.println("质数的个数为:" + count); System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13 } }3. 方法3public class PrimeNumberTest2 { public static void main(String[] args) { int count = 0;//记录质数的个数 long start = System.currentTimeMillis();//时间戳 label:for (int i = 2; i <= 100000; i++) { //遍历100以内的自然数 for (int j = 2; j < Math.sqrt(i); j++) { //j:被i去除 if (i % j == 0){ //i被j除尽 continue label; } } //能执行到此步骤的,都是质数 count++; } long end = System.currentTimeMillis();//时间戳 System.out.println("质数的个数为:" + count); System.out.println("所花费的时间为:" + (end - start));//17110 - 优化一:break:1546 - 优化二:13 } }
2021年11月29日
76 阅读
0 评论
0 点赞
2021-11-28
java练习2
看不懂的链表public class NodeTest { public static void main(String[] args) { Node node1 = new Node(1, "李白1", "刺客1"); Node node2 = new Node(2, "李白2", "刺客2"); Node node3 = new Node(3, "李白3", "刺客3"); Node node4 = new Node(4, "李白4", "刺客4"); Node node5 = new Node(5, "李白5", "刺客5"); Node node6 = new Node(5, "李白", "刺客5"); SingleLinkedList singleLinkedList = new SingleLinkedList(); singleLinkedList.add(node1); singleLinkedList.add(node2); singleLinkedList.add(node4); singleLinkedList.add(node5); singleLinkedList.add2(node3); singleLinkedList.delete(3); singleLinkedList.delete(6); singleLinkedList.change(node6); singleLinkedList.change(1, "李白6", "刺客6"); singleLinkedList.show(); } } class SingleLinkedList{ private Node head=new Node(0, "", ""); public void add(Node node){ Node temp = head; while (true){ if (temp.next == null){ break; } temp = temp.next; } temp.next = node; } public void add2(Node node){ Node temp = head; boolean flag = false; while (true){ if (temp.next == null){ break; } if (temp.next.no > node.no){ break; }else if (temp.next.no == node.no){ flag = true; break; } temp = temp.next; } if (flag){ System.out.println("编号已经存在,不能添加"); }else { node.next = temp.next; temp.next = node; } } public void delete(int no){ Node temp = head; boolean flag = false; while (true){ if (temp.next == null){ break; } if (temp.next.no == no){ flag = true; break; } temp = temp.next; } if (flag){ temp.next = temp.next.next; }else { System.out.println("不存在"); } } public void change(int no, String name, String type){ if(head.next == null){ System.out.println("链表为空"); return; } Node temp = head.next; boolean flag = false; while (true){ if(temp == null){ System.out.println("没有找到数据"); break; } if (temp.no == no){ flag = true; break; } } if (flag){ temp.name = name; temp.type = type; } } public void change(Node node){ Node temp = head; //boolean flag = false; delete(node.no); add2(node); } public void show(){ if (head.next == null){ System.out.println("该链表为空"); return; } Node temp = head.next; while (true){ if (temp == null){ break; } System.out.println(temp); temp = temp.next; } } } class Node{ public int no; public String name; public String type; public Node next; public Node(int no, String name, String type){ this.no = no; this.name = name; this.type = type; } @Override public String toString() { return "Node{" + "no=" + no + ", name='" + name + '\'' + ", type='" + type + '\'' + '}'; } }
2021年11月28日
37 阅读
0 评论
0 点赞
2021-11-27
java学习笔记5
{music id="1848243289" color="#1989fa" autoplay="autoplay"/}程序流程控制顺序结构分支结构循环结构输入Scanner具体步骤导包:import java.util.Scanner;Scanner的实例化:Scanner scan = new Scanner(System.in);调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量java代码//1.导包:import java.util.Scanner; import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { //2.Scanner的实例化 Scanner scan = new Scanner(System.in); //3.调用Scanner类的相关方法 System.out.println("请输入姓名:"); String name = scan.next(); System.out.println(name); System.out.println("请输入你的芳龄:"); int age = scan.nextInt(); System.out.println(age); System.out.println("请输入"); double weight = scan.nextDouble(); System.out.println(weight); System.out.println("你是否相中我了呢?(true/false)"); boolean isLove = scan.nextBoolean(); System.out.println(isLove); //对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串 System.out.println("请输入你的性别:(男/女)"); String gender = scan.next(); char genderChar = gender.charAt(0);//获取索引为0位置上的字符 System.out.println(genderChar); } }3. Tip:需要根据相应的方法,来输入指定类型的值。 如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException,导致程序终止。1. 分支结构(if——else)1. 三种结构第一种:if(条件表达式){ 执行表达式 }第二种:二选一if(条件表达式){ 执行表达式1 }else{ 执行表达式2 }第三种:n选一if(条件表达式){ 执行表达式1 }else if(条件表达式){ 执行表达式2 }else if(条件表达式){ 执行表达式3 } ... else{ 执行表达式n }2. java代码public class IfTest { public static void main(String[] args) { int heartBeats = 67; if(heartBeats < 60 || heartBeats > 100){ System.out.println("需要进一步检查"); } System.out.println("检查结束"); int age = 23; if(age < 18){ System.out.println("可以看动画片了"); }else { System.out.println("可以看大动画片了"); } if(age < 0){ System.out.println("输入的数据非法"); }else if(age < 18){ System.out.println("青少年模式"); }else if(age < 35){ System.out.println("青壮年模式"); }else if(age < 60){ System.out.println("中年模式"); }else if(age < 120){ System.out.println("老年模式"); }else if(age > 120){ System.out.println("成仙模式"); } } }3. Tipelse 结构是可选的。针对于条件表达式:如果条件表达式之间没有交集的关系,判断和执行语句声明与在上面还是下面无关。如果条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。如果条件表达式之间有包含的关系,需要将范围小的声明在范围大的上面。否则,范围小的就不会执行了。if-else结构是可以相互嵌套的。if-else结构中的执行语句只有一行时,对应的{}可以省略的。但是,不建议大家省略。2. 分支结构(switch-case)1. 结构switch(表达式){ case 常量1: 执行语句1; //break; case 常量2: 执行语句2; //break; ... default: 执行语句n; //break; }2. java代码public class SwitchCaseTest { public static void main(String[] args) { String season = "summer"; switch (season){ case "spring": System.out.println("春暖花开"); break; case "summer": System.out.println("夏日炎炎"); break; case "autumn": System.out.println("秋高气爽"); break; case "winter": System.out.println("冬雪皑皑"); break; default: System.out.println("季节输入有误"); break; } } }//从键盘分别输入年、月、日,判断这一天是当年的第几天 import java.util.Scanner; public class SwitchCaseExer { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入year:"); int year = scan.nextInt(); System.out.println("请输入month:"); int month = scan.nextInt(); System.out.println("请输入day:"); int day = scan.nextInt(); //定义一个变量来保存总天数 int sumDays = 0; switch(month){ case 12: sumDays += 30; case 11: sumDays += 31; case 10: sumDays += 30; case 9: sumDays += 31; case 8: sumDays += 31; case 7: sumDays += 30; case 6: sumDays += 31; case 5: sumDays += 30; case 4: sumDays += 31; case 3: if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ sumDays += 29; }else { sumDays += 28; } case 2: sumDays += 31; case 1: sumDays += day; } System.out.println(year + month + "月" + day + "日是当年的第" + sumDays + "天"); } }3. Tip根据switch中的值,依次匹配各个case中的常量。匹配成功后,则进入相应case中。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。break在switch-case结构中,表示遇到此关键字后,就跳出switch-case结构switch结构中的表达式,只能是如下的6种数据类型之一: byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)case 后面只能放常量,不能放范围。(case age > 18:)break关键字是可选的。default:相当于if-else结构中的else。default结构是可选的,而且位置是灵活的。凡是可以使用switch-case的结构,都可以用if-else。反之,不成立。我们写分支结构时,当发现既可以使用switch-case,(而且,switch中表达式的取值情况不太多), 又可以使用if-else时,我们优先用switch-case。原因:switch-case执行效率稍高。3. 循环结构(for循环)1. 结构① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 for(①;②;④){ ③ } 执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②2.java代码public class ForTest { public static void main(String[] args) { for (int i = 0; i < 5; i++){ System.out.println(i + " hello world"); } int num = 1; //abcbcbc for(System.out.print('a'); num <= 3; System.out.print('c'), num++){ System.out.print('b'); } System.out.println(); //遍历100以内的偶数,输出所有偶数的和,输出偶数的个数 int sum = 0; int count = 0; for (int i = 1; i <= 100; i++) { if(i % 2 == 0){ //System.out.println(i); sum += i; count++; } } System.out.println("总和为:" + sum); System.out.println("个数为:" + count); } }4. 循环结构(while循环)1. 结构① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 ① while(②){ ③; ④; } 执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②2. java代码public class WhileTest { public static void main(String[] args) { int i = 2; while (i <= 100){ if(i % 2 == 0){ System.out.println(i); } i++; } //循环外,仍然有i System.out.println(i);//101 } }3.Tip写while循环记得要写迭代条件。一旦丢了,就可能导致死循环,我们要避免出现死循环。for循环和while循环是可以相互转换的! 区别:for循环和while循环的初始化条件部分的作用范围不同。5. 循环结构(do while循环)1. 结构① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 ① do{ ③; ④; }while(②); 执行过程:① - ③ - ④ - ② - ③ - ④ - ... - ②2. java代码public class DoWhileTest { public static void main(String[] args) { //遍历100以内的偶数,并计算所有偶数的和及偶数的个数 int num = 1; int sum = 0; int count = 0; do { if(num % 2 == 0){ System.out.println(num); sum += num; count++; } num++; }while (num <= 100); System.out.println("总和为:" + sum); System.out.println("个数为:" + count); //do-while至少执行一次循环体 int number1 = 10; while (number1 >10){ System.out.println("while"); number1--; } int number2 = 10; do { System.out.println("do_while"); number2--; }while (number2 > 10); } }3. Tipdo-while循环至少会执行一次循环体!开发中,使用for和while更多一些。较少使用do-while6. 最简单“无限” 循环格式while(true) , for(;;),无限循环存在的原因是并不知道循环多少次, 需要根据循环体内部某些条件,来控制循环的结束。//从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。 import java.util.Scanner; public class ForWhileTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int positiveNumber = 0; //正数的个数 int negativeNumber = 0; //负数的个数 while (true){ //for (;;) int number = scanner.nextInt(); if(number > 0){ positiveNumber++; }else if(number < 0){ negativeNumber++; }else { break; } } System.out.println("正数: " + positiveNumber); System.out.println("负数:" + negativeNumber); } }结束方法循环条件部分返回false在循环体中,执行break
2021年11月27日
57 阅读
0 评论
1 点赞
2021-11-21
java学习笔记4
{music id="1817839113" color="#1989fa" /}一. 运算符算术运算符 赋值运算符 比较运算符(关系运算符) 逻辑运算符 位运算符 三元运算符1. 算术运算符1. 常用的算术运算符运算符运算范例结果+正号+33-负号b=4; -b-4+加5+510-减6-42*乘3*412/除5/51%取模(取余)7%52++自增(前):先运算后取值a=2;b=++a;a=3;b=3++自增(后):先取值后运算a=2;b=a++;a=3;b=2- -自减(前):先运算后取值a=2;b=- -aa=1;b=1- -自减(后):先取值后运算a=2;b=a- -a=1;b=2+字符串连接“He”+”llo”“Hello2. 除法运算 /java代码public class AriTest { public static void main(String[] args) { int num1 = 12; int num2 = 5; int result1 = num1 / num2; System.out.println(result1); //2 int result2 = num1 / num2 * num2; System.out.println(result2); //10 double result3 = num1 / num2; System.out.println(result3); //2.0 double result4 = num1 / (num2 + 0.0); //2.4 System.out.println(result4); double result5 = (double) num1 / num2; //2.4 System.out.println(result5); } }2. 取余运算 %1. java代码public class AriTest { public static void main(String[] args) { //取余运算 % System.out.println("12 % 5 = " + 12 % 5); //2 System.out.println("-12 % 5 = " + -12 % 5); //-2 System.out.println("12 % -5 = " + 12 % -5); //2 System.out.println("-12 % -5 = " + -12 % -5); //-2 } }2. Tip结果的符号与被模数(前面那个)的符号相同。经常使用%来判断能否被除尽的情况。3. 前后自增(减) ++ --1.运算规则(前)++ :先自增1,后运算 (后)++ :先运算,后自增1 (前)-- :先自减1,后运算 (后)-- :先运算,后自减1 自增1不会改变本身的数据类型2. java代码public class AriTest { public static void main(String[] args) { //a++ ++a int a1 = 10; int b1 = ++a1; System.out.println("a1 = " + a1 + ",b1 = " + b1);//11 11 int a2 = 10; int b2 = a1++; System.out.println("a2 = " + a2 + ",b2 = " + b2);//10 11 int a3 = 10; //这样子两个都是一样的 ++a3;//a3++; short s1 = 10; s1 = (short) (s1 + 1); //这个是可以的 System.out.println(s1); //11 s1++; //自增1不会改变本身的数据类型 System.out.println(s1); //12 //--a a-- int a4 = 10; int b4 = --a4; System.out.println("a4 = " + a4 + ",b4 = " + b4); //9 9 } }2. 赋值运算符1. java代码public class SetValueTest { public static void main(String[] args) { int i1 = 10; int j1 = 10; int i2 = 10, j2 = 20; //int i3 = j3 = 10; 这个不行 int i3, j3; //连续赋值 i3 = j3 = 10; int num1 = 10; num1 += 2; System.out.println(num1); //12 short s1 = 10; //s1 = s1 + 2;//编译失败 s1 += 2;//结论:不会改变变量本身的数据类型 System.out.println(s1); //12 int n1 = 10; n1 += (n1++) + (++n1);//n1 = n1 + (n1++) + (++n1); System.out.println(n1);//32 } }2. Tip支持连续赋值。 扩展赋值运算符: +=, -=, *=, /=, %= 不会改变变量本身的数据类型3. 比较运算符1. 常用的比较运算符运算符运算范例结果==相等于4==3false!=不等于4!=3true<小于4<3false>大于4>3true<=小于等于4<=3false>=大于等于4>=3trueinstanceof检查是否是类的对象“Hello” instanceof Stringtrue2. java代码public class CompareTest { public static void main(String[] args) { int i = 10; int j = 20; System.out.println(i == j); //false System.out.println(i = j); //20 boolean b1 = true; boolean b2 = false; System.out.println(b2 == b1); //false System.out.println(b2 = b1); //true } }3. Tip比较运算符的结果是boolean类型 区分 == 和 =4.逻辑运算符1. 常用的逻辑运算符& —逻辑与 | —逻辑或 ! —逻辑非 && —短路与 || —短路或 ^ —逻辑异或2.运算规则aba&ba&&ba|ba||b!aa^btruetruetruetruetruetruefalsefalsetruefalsefalsefalsetruetruefalsetruefalsetruefalsefalsetruetruetruetruefalsefalsefalsefalsefalsefalsetruefalse3.结论与:一假则假或:有真则真非:取反异或:一样则假,不一样则真4. java代码public class LogicTest { public static void main(String[] args) { //相同点:& 与 && 的运算结果相同 //当符号左边是true时,二者都会执行符号右边的运算 //当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。 //开发中,推荐使用&& boolean b1 = true; b1 = false; int num1 = 10; if(b1 & (num1++ > 0)){ System.out.println("我现在在北京"); }else{ System.out.println("我现在在南京"); //这个 } System.out.println("num1 = " + num1); //11 boolean b2 = true; b2 = false; int num2 = 10; if(b2 && (num2++ > 0)){ System.out.println("我现在在北京"); }else{ System.out.println("我现在在南京"); //这个 } System.out.println("num2 = " + num2); //10 //相同点:| 与 || 的运算结果相同 //当符号左边是false时,二者都会执行符号右边的运算 //当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算 //开发中,推荐使用|| boolean b3 = false; b3 = true; int num3 = 10; if(b3 | (num3++ > 0)){ System.out.println("我现在在北京"); //这个 }else{ System.out.println("我现在在南京"); } System.out.println("num3 = " + num3); //11 boolean b4 = false; b4 = true; int num4 = 10; if(b4 || (num4++ > 0)){ System.out.println("我现在在北京"); //这个 }else{ System.out.println("我现在在南京"); } System.out.println("num4 = " + num4); //10 } }5. Tip逻辑运算符操作的都是boolean类型的变量5. 位运算符(直接对整数的二进制进行的运算)1. 常见的位运算符运算符运算范例<<左移3 << 2 = 12 --> 322=12>>右移3 >> 1 = 1 --> 3/2=1>>>无符号右移3 >>> 1 = 1 --> 3/2=1&与运算6 & 3 = 2|或运算6 | 3 = 7^异或运算6 ^ 3 = 5~取反运算~6 = -72. 位运算符的细节位运算符细节<<空位补0,被移除的高位丢弃,空缺位补0。>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。&二进制位进行&运算,只有1&1时结果是1,否则是0;|二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;^相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 。 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1~正数取反,各二进制码按补码各位取反。负数取反,各二进制码按补码各位取反3. java代码public class BitTest { public static void main(String[] args) { int i = 21; //i = -21; System.out.println("i << 2 :" + (i << 2)); System.out.println("i << 3 :" + (i << 3)); System.out.println("i << 27 :" + (i << 27)); int m = 12; int n = 5; //写成二进制,1表示true,表示false System.out.println("m & n :" + (m & n)); //4 System.out.println("m | n :" + (m | n)); //13 System.out.println("m ^ n :" + (m ^ n)); //9 System.out.println("~m:" + (~m)); //-13 符号位也取反 } }4. Tip位运算符操作的都是整型的数据<< :在一定范围内,每向左移1位,相当于 * 2\>> :在一定范围内,每向右移1位,相当于 / 26. 三元运算符1. 结构:(条件表达式)? 表达式1 : 表达式22.java代码public class SanYuanTest { public static void main(String[] args) { //取最大值 int m = 12; int n = 5; int max = (m > n) ? m : n; //12 System.out.println(max); double num = (m > n)? 2 : 1.0; //(m > n)? 2 : "n大";//编译错误 n = 12; String maxStr = (m > n)? "m大" : ((m == n)? "m和n相等" : "n大"); System.out.println(maxStr); //获取三个的最大值 int n1 = 12; int n2 = 30; int n3 = -43; int max1 = (n1 > n2)? n1 : n2; int max2 = (max1 > n3)? max1 : n3; System.out.println("三个数中的最大值为:" + max2); } }3. Tip条件表达式的结果为boolean类型.根据条件表达式真或假,true则表达式1,false则表达式2.表达式1 和表达式2 数据类型.要求是一致的。三元运算符可以嵌套使用.可以使用三元运算符的地方,都可以改写为if-else,不能反过来.如果既可以三元运算符,又可以if-else结构,那么优先三元运算符。原因:简洁、执行效率高。2. 运算符优先级(从上到下由高到低) .() {} ; ,R—>L++ -- ~ !(data type)L—>R* / %L—>R+ -L—>R<< >> >>>L—>R< > <= >= instanceofL—>R== !=L—>R&L—>R^L—>R|L—>R&&L—>R||R—>L? :R—>L= *= /= %= += -= <<= >>= >>>= &= ^= |=优先用括号只有单目运算符、三元运算符、赋值运算符是从右向左运算的。
2021年11月21日
75 阅读
0 评论
0 点赞
1
2
3
4