Project 1 笔记
javac
编译java
运行cd+源代码地址
来进入目录HelloWorld源码
public class HelloWorld/*一个类*/ { public/*main方法*/ static/*main的类型*/ void/*返回类型*/ main (String args/*两个均为标识符*/[]) { System.out.println("Hello World!"); } }
print
不换行println
会换行字符串是常量 字符串缓冲区支持可变字符串
Project 2 笔记
- 正数的补码:为这个数的2进制码(原码)
- 负数的补码:在原码的基础上,符号位不变,其他位逐位取反,再+1
牛顿迭代法
首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代个六七次后x的值double sqr(double n) { double k=1.0//随便猜; while(abs(k*k-n)>1e-9) { k=(k+n/k)/2; } return k;//即平方根近似值 }
java排序函数引用
import java.util.Arrays; Arrays.sort(a);
int n=Integer.parseInt(args[0]);
等同于import iava.util.Scanner; Scanner input=new Scanner(System.in); int n=input.nextInt();
注:若输入字符串,直接
next()
;n<<r
位左移,相当于n*2^r
;^
异或运算符,0^0=0; 1^1=0; 0^1=1; 1^0=1;- 注意
do while
保留两位小数
double a==3.14159; String b = String.format("%.2f", a); System.out.println(b);
Project 3 笔记
- 表示转义字符
String replace("\'","\"");
- 命令行参数的个数
args.length
String strStringType="my string";
创建一个字符串变量strStringType char[] chrCharArray;
创建一个字符数组chrCharArray chrCharArray = strStringType.toCharArray();
将字符串变量转换为字符数组strStringType= String.valueOf(chrCharArray );
将字符数组转换为字符串
这里,关键是两个方法。
(1)String
类的toCharArray()
方法,将字符串转换为字符数组
(2)String
类的valueOf()
方法,将char
类型的数组转换为字符串
- 不使用循环的逆序输出
import java.util.Scanner;
import java.lang.StringBuffer;
public class reverse {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.next();
StringBuffer ss = new StringBuffer(s);
System.out.println(ss.reverse());
}
}
- 字符流与字节流的区别:字节流优先选择
字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,
而字符流在操作时使用了缓冲区,通过缓冲区再操作文件 - 获取绝对路径:
file.getAbsolutePath()
获取名称: file.getName()
- 比较String 用
s1.equals(s2)
- 字符串的长度
s.length()
数组的长度s.length
- 追加方式写入文件
package com.thread.test;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
public class AppendToFile {
public static void appendMethodA(String fileName,String content){
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
//将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e){
e.printStackTrace();
}
}
public static void appendMethodB(String fileName, String content){
try {
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/t2.txt";
String content = "new append!";
//按方法A追加文件
AppendToFile.appendMethodA(fileName, content);
AppendToFile.appendMethodA(fileName, "append end. n");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
//按方法B追加文件
AppendToFile.appendMethodB(fileName, content);
AppendToFile.appendMethodB(fileName, "append end. n");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
}
}
- 获取用户当前工作目录
System.getProperty("user.dir")+"/test.jpg"
floor
返回不大于的最大整数round
则是4舍5入的计算,入的时候是到大于它的整数,算法为Math.floor(x+0.5)
,即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5) = 12
,Math.round(-11.5) = -11
ceil
则是不小于他的最小整数
Project 5 笔记
- 有趣的是,在类中定义了
toString()
方法后,用System输出时直接填入 对象名 ,会默认调用toString()
方法 单例模式(Singleton)
:保证程序永远能获得同一个Java对象。
示例一:称饿汉式 :开始就急着创建对象,所以称为俄汉式class A{ private static A a = new A(); private A(){//使用private访问控制符来让外界不能new该对象;只能调用静态方法来获取。 //这样方可实现外界永远获得的是同一个Java对象。 } public static A getInstance(){ return a; } }
示例二:称懒汉式 :开始不创建对象,等到用的时候才创建,行为有点懒;所以称为懒汉式。class A{ private static A a=null; private A(){} public synchronized static A getInstance(){ if(a == null){ a = new A(); } return a; } }