第一天
-
eclipse使用中文语言包及设置中文api提示 可提高开发效率 参考链接:
- 设置Eclipse里面的api提示为中文:https://jingyan.baidu.com/article/c275f6bacb4425e33d7567b6.html
Alt+/ 呼出代码辅助(输入main + Alt+/ 可快速创建main方法)
comand+. 呼出首选项窗口
-
java控制台输入
System.out.print("请输入"); Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); System.out.println("输入的值为:"+ line + "\t长度为"+ line.length());
- nextLine() 获取输入的一行文本;
- nextLong()获取输入的整数
第二天
-
重定向输出流 以日志文件存储输出内容
//导入库 import java.io.FileNotFoundException; import java.io.PrintStream; public class RedirectOutputStream { public static void main(String[] args) { // TODO 自动生成的方法存根 try { //保存原输出流 PrintStream out = System.out; //创建文件输出流 项目目录下 PrintStream ps = new PrintStream("./log.txt"); //设置使用新的输出流 System.setOut(ps); int age = 18; System.out.println("定义年龄变量 初始值为18"); String sex = "女"; System.out.println("定义性别变狼 初始值为女"); //整合两个变量 String info = "这是个" + sex + "孩子,年龄为" + age + "岁。"; System.out.println("整合两个变量为info字符串 值为:"+ info); //恢复原有输出流 System.setOut(out); System.out.println("程序运行完毕,请查看日志文件"); } catch (FileNotFoundException error){ error.printStackTrace(); } } }
异或运算、位运算
-
异或加密/解密 此处用err错误输出流,是利用控制台以红色显示的特性
Scanner scan = new Scanner(System.in); System.out.println("输入要加密的字符串"); //获取用户输入 String password = scan.nextLine(); //获取字符数组 char[] array = password.toCharArray(); //对数组中每个元素进行 对20000的异或(^)运算 for (int i = 0; i < array.length; i++) { array[i] = (char)(array[i]^20000); } System.out.println("加密结果如下:"); System.err.println(new String(array)); System.out.println("解密结果如下:"); //对数组中每个元素进行 对20000的异或(^)运算 for (int i = 0; i < array.length; i++) { array[i] = (char)(array[i]^20000); } System.err.println(new String(array));
-
使用异或运算可以使两个变量,不通过第3个变量交换值。例:
long a = 10; long b = 12; a = a^b; b = b^a; a = a^b;
-
位移运算,一个整数每次执行位移运算:
- 左移n位==整数*2的n次方; number<<1
- 右移n位== 整数除以2的n次方; number>>1
3、 浮点型进行运算会有误差 需要使用BigDecimal类进行精确运算 且构造时必须为数字字符串,如果为数字 也会造成不精确。方法声明如下
public BigDecimal add(BigDecimal augend) 加法
public BigDecimal subtract(BigDecimal subtrahend) 减法
public BigDecimal multiply(BigDecimal multiplicand) 乘法
public BigDecimal divide(BigDecimal divisor) 除法 如果结果为无限循环小数时 会报错
-
public BigDecimal divide(BigDecimal divisor, Int scale, roundingMode) 除法:结果为无限小数 ,scale 保留小数后几位 , roundingMode 舍入模式 一般为BigDecimal.ROUND_HALF_UP(四舍五入)
double money = 2; double price = 1.1; double result = money - price; System.err.println("非精确计算double类型2-1.1结果:" + result); //精确浮点数的解决办法 BigDecimal money1 = new BigDecimal("2"); BigDecimal price1 = new BigDecimal("1.1"); //加法 BigDecimal result1 = money1.subtract(price1); //减法 BigDecimal result2 = money1.add(price1); //乘法 BigDecimal result3 = money1.multiply(price1); //除法 此处需要注意 除法可能出现无限小数问题 需要定义保留小数后几位(此处保留2位小数) 舍入模式(四舍五入) BigDecimal result4 = money1.divide(price1, 2, BigDecimal.ROUND_HALF_UP); System.err.println("精确计算double类型2和1.1 加减乘除结果为:" + result1 + "," + result2 + "," + result3 + "," + result4);
4、 字符串比较不能使用== 用 str.equals(str2)
5、str.hashCode() 获取字符串的哈希码整数值
6、 for :
-
foreach:
//创建集合 List<String> list = new ArrayList<String>(); list.add("1111"); list.add("22"); list.add("333"); System.out.print("foreach遍历集合:\n\t"); for (String string : list) { System.out.print(string); } System.out.println(); //创建数组 String[] strs = new String[list.size()]; list.toArray(strs); System.out.print("foreach遍历数组:\n\t"); for (String string:list) { System.out.print(string+ "\t"); }
-
终止双重for循环
No1: for(int i=0;i<10;i++) { System.out.println(); for (int j=0;j<10;j++){ System.out.print(i+" "+j+ "\t"); if (i==5 && j==5) { System.out.print("\n终止双层循环"); break No1; } } }
字符串
-
去除左右空格字符,注意不会去除字符串中间的空格
数组与集合
- 获取输入框