目录
实例017:不用乘法运算实现 2 * 16(位移运算 更高效)
实例018:实现两个变量的互换(不借助第三个变量 异或运算 更高效)
实例011:输出错误信息与调试信息
package com.test_011;
public class Test_011 {
public static void main(String[] args) {
System.out.println("main()方法开始运行了");
//输出一个错误信息
System.err.println("在运行期间手动输出一个错误信息:");
System.err.println("\t 该软件没有购买保险,请注意安全!");
System.out.println("Test_011.main()");
System.out.println("main()方法运行结束");
}
}
每次运行结果都不同,错误信息位置随机。
实例012:从控制台接收输入字符
package com.test_011;
import java.util.Scanner;
public class Test_012 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建Scanner扫描器来封装System类的in输入流
System.out.println("请输入字符串:");
String str = sc.nextLine();
System.out.println(str);
sc.close();
}
}
实例013:重定向输出流实现程序日志
System 类中的 out 成员变量是 Java 的标准输出流,程序常用它来输出调试信息。out 成员变量被定义为 final 类型的,无法直接重新赋值,但是可以通过 setOut() 方法来设置新的输出流。本实例利用该方法实现了输出流的重定向,把它指向一个文件输出流,从而实现了日志功能。程序运行后控制台提示运行结束信息,但是在运行过程中的步骤都保存到了日志文件中。
略难,以后懂了再来补充
实例014:自动类型转换与强制类型转换
package com.test_011;
public class Test_014 {
public static void main(String[] args) {
byte b = 127;
char c = 'W';
short s = 23561;
int i = 3333;
long L = 4000000L;
float f = 3.1415926F;
double d = 54.523;
//低类型向高类型自动转换
System.out.println("累加 byte 等于:" + b);
System.out.println("累加 char 等于:" + (b+c));
System.out.println("累加 short 等于:" + (b+c+s));
System.out.println("累加 int 等于:" + (b+c+s+i));
System.out.println("累加 long 等于:" + (b+c+s+i+L));
System.out.println("累加 float 等于:" + (b+c+s+i+L+f));
System.out.println("累加 double 等于:" + (b+c+s+i+L+f+d));
//高类型到低类型的强制转换
System.out.println("把 long 类型强制转换为 int:" + (int)L);
//高类型到低类型转换会丢失数据
System.out.println("把 long 类型强制转换为 short:" + (short)L);
//实数转换成整数会舍弃小数部分
System.out.println("把 double 类型强制转换为 int:" + (int)d);
//整数到字符类型会获取对应编码的字符
System.out.println("把 short 类型转换为 char:" + (char)s);
}
}
运行效果:
累加 byte 等于:127
累加 char 等于:214
累加 short 等于:23775
累加 int 等于:27108
累加 long 等于:4027108
累加 float 等于:4027111.2
累加 double 等于:4027165.773
把 long 类型强制转换为 int:4000000
把 long 类型强制转换为 short:2304
把 double 类型强制转换为 int:54
把 short 类型转换为 char:尉
实例015:加密可以这样简单(位运算)
package com.test_011;
import java.util.Scanner;
public class Test_015 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要加密的字符串:");
String str = sc.nextLine(); //获取用户输入
char[] array = str.toCharArray(); //获取字符数组
for(int i = 0; i < array.length; i++) { //遍历数组
array[i] = (char)(array[i] ^ 20000); //对每个数组元素进行异或运算
}
System.out.println("加密或解密的结果如下");
System.err.println(new String(array)); //输出结果
}
}
程序最后使用的标准错误输出流不是用于输出错误信息,而是利用了其在 Eclipse控制台以红色显示的特征来突出显示。
实例016:用三元运算符判断奇数和偶数
package com.test_011;
import java.util.Scanner;
public class Test_016 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建输入流扫描器
System.out.println("请输入一个整数:");
long number = sc.nextLong(); //获取用户输入的整数
String check = (number % 2 == 0)?"这个数是:偶数":"这个数是:奇数";
System.out.println(check);
sc.close();
}
}
实例017:不用乘法运算实现 2 * 16(位移运算 更高效)
package com.test_011;
import java.util.Scanner;
public class Test_017 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
long number = sc.nextLong();
System.out.println("你输入的数是:" + number);
System.out.println("这个数字乘以2的运算结果为:" + (number<<1)); //左移一位 乘 2
System.out.println("这个数字乘以4的运算结果为:" + (number<<2)); //左移两位 乘 4
System.out.println("这个数字乘以8的运算结果为:" + (number<<3)); //左移两位 乘 8
System.out.println("这个数字乘以16的运算结果为:" + (number<<4)); //左移两位 乘 16
}
}
实例018:实现两个变量的互换(不借助第三个变量 异或运算 更高效)
package com.test_011;
import java.util.Scanner;
public class Test_018 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("获取变量A:");
long a = sc.nextLong();
System.out.println("获取变量B:");
long b = sc.nextLong();
System.out.println("A:" + a + " B:" + b);
System.out.println("互换后的结果为:");
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("A:" + a + " B:" + b);
}
}