本人看菜鸟教程java实例的笔记
巧妙的数组反转
for (int i = 0,j=result.length-1; i < arr.length; i++,j--) {
result[j] = arr[i];
}
字符串比较
str.compareTo(anotherString)
查找字符串最后一次出现的位置
strOrig.lastIndexOf("Runoob")
删除字符串中的一个字符
public static String removeCharAt(String s, int pos) {
return s.substring(0, pos) + s.substring(pos + 1);
}
字符串替换
str.replace( 'H','W' )
字符串反转
String reverse = new StringBuffer(string).reverse().toString();
字符串分割
String[] temp1;
String delimeter1 = "\\."; // 指定分割字符, . 号需要转义
temp1 = str1.split(delimeter1);
StringTokenizer st2 = new StringTokenizer(str, ",");
while (st2.hasMoreElements()) {
System.out.println(st2.nextElement());
}
测试两个字符串区域是否相等
boolean match2 = first_str.
regionMatches(true, 11, second_str, 12, 9); //第一个参数 true 表示忽略大小写区别
字符串格式化
System.out.format("%f%n", e);
连接字符串
String result = "This is" + "testing the";
StringBuffer result = new StringBuffer();
result.append("This is");
result.append("testing the");
数组排序及元素查找
Arrays.sort(array);
int index = Arrays.binarySearch(array, 2);
数组复制
System.arraycopy(original, 0, destination, 0, index);
数组长度
data.length
数组反转
import java.util.*;
Collections.reverse(Arrays.asList(a));
数组获取最大和最小值
int min = (int) Collections.min(Arrays.asList(numbers));
int max = (int) Collections.max(Arrays.asList(numbers));
数组合并
String a[] = { "A", "E", "I" };
String b[] = { "O", "U" };
List list = new ArrayList(Arrays.asList(a));
list.addAll(Arrays.asList(b));
Object[] c = list.toArray();
import java.nio.*;
int[] myNumbers=new int[]{1,2,3,4};
int[] yourNumbers=new int[]{5,6,7};
int[] theirNumbers=new int[]{8,9,0};
//按需要分配buffer
IntBuffer intBuffer = IntBuffer.allocate(myNumbers.length+yourNumbers.length+theirNumbers.length);
//放入到buffer
intBuffer.put(myNumbers);
intBuffer.put(yourNumbers);
intBuffer.put(theirNumbers);
//得到合并后的数组
int[] allNumber = intBuffer.array();
数组填充
Arrays.fill(array, 100);
数组差集
objArray.removeAll(objArray2);
数组交集
objArray.retainAll(objArray2);
在数组中查找元素
objArray.contains("common2");
判断数组是否相等
Arrays.equals(ary, ary1)
数组并集
// 求两个字符串数组的并集,利用set的元素唯一性
public static String[] union(String[] arr1, String[] arr2) {
Set<String> set = new HashSet<String>();
for (String str : arr1) {
set.add(str);
}
for (String str : arr2) {
set.add(str);
}
String[] result = { };
return set.toArray(result);
}
格式化时间
Date date = new Date();
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println(sdf.format(date));
SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间
sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// a为am/pm的标记
Date date = new Date();// 获取当前时间
System.out.println("现在时间:" + sdf.format(date)); // 输出已经格式化的现在时间(24小时制)
日历类
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH) + 1;
int year = cal.get(Calendar.YEAR);
int dow = cal.get(Calendar.DAY_OF_WEEK);
int dom = cal.get(Calendar.DAY_OF_MONTH);
int doy = cal.get(Calendar.DAY_OF_YEAR);
时间戳转时间
Long timeStamp = System.currentTimeMillis(); //获取当前时间戳
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sd = sdf.format(new Date(Long.parseLong(String.valueOf(timeStamp))));
汉诺塔问题
public class MainClass {
public static void main(String[] args) {
int nDisks = 3;
doTowers(nDisks, 'A', 'B', 'C');
}
public static void doTowers(int topN, char from, char inter, char to) {
if (topN == 1){
System.out.println("Disk 1 from "
+ from + " to " + to);
}else {
doTowers(topN - 1, from, to, inter);
System.out.println("Disk "
+ topN + " from " + from + " to " + to);
doTowers(topN - 1, inter, from, to);
}
}
}
Java 实例 - Enum(枚举)构造函数及方法的使用
enum Car {
lamborghini(900),tata(2),audi(50),fiat(15),honda(12);
private int price;
Car(int p) {
price = p;
}
int getPrice() {
return price;
}
}
public class Main {
public static void main(String args[]){
System.out.println("所有汽车的价格:");
for (Car c : Car.values())
System.out.println(c + " 需要 "
+ c.getPrice() + " 千美元。");
}
}
可变参数
static int sumvarargs(int... intArrays){
int sum, i;
sum=0;
for(i=0; i< intArrays.length; i++) {
sum += intArrays[i];
}
return(sum);
}
文件写入
BufferedWriter out = new BufferedWriter(new FileWriter("runoob.txt"));
out.write("菜鸟教程");
out.close();
读取文件
BufferedReader in = new BufferedReader(new FileReader("test.log"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
读写文件
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
删除文件
File file = new File("c:\\test.txt");
if(file.delete()){
System.out.println(file.getName() + " 文件已被删除!");
}else{
System.out.println("文件删除失败!");
}
追加文件
out = new BufferedWriter(new FileWriter("filename",true));
out.write("aString2");
out.close();
// 创建临时文件
f = File.createTempFile("tmp", ".txt", new File("C:/"));
// 终止后删除临时文件
f.deleteOnExit();
//修改文件最后修改日期
System.out.println(fileToChange.setLastModified(System.currentTimeMillis()));
filetime = new Date(fileToChange.lastModified());
System.out.println(filetime.toString());
文件大小
file.length();
文件重命名
// 旧的文件或目录
File oldName = new File("./runoob-test.txt");
// 新的文件或目录
File newName = new File("./runoob-test-2.txt");
if (newName.exists()) { // 确保新的文件名不存在
throw new java.io.IOException("file exists");
}
if(oldName.renameTo(newName)) {
System.out.println("已重命名");
} else {
System.out.println("Error");
}
文件只读
file.setReadOnly()
文件存在
ile.exists()
创建文件
File file = new File("C:/myfile.txt");
if(file.createNewFile())
System.out.println("文件创建成功!");
else
System.out.println("出错了,该文件已经存在。");
递归创建目录
String directories = "D:\\a\\b\\c\\d\\e\\f\\g\\h\\i";
File file = new File(directories);
boolean result = file.mkdirs();
删除目录
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir
(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
if(dir.delete()) {
System.out.println("目录已被删除!");
return true;
} else {
System.out.println("目录删除失败!");
return false;
}
file.list().length>0 表示目录不为空
目录大小
import java.io.File;
import org.apache.commons.io.FileUtils;
long size = FileUtils.sizeOfDirectory(new File("C:/test"));
上级目录
String strParentDirectory = file.getParent()
遍历目录
if (file.isDirectory()) {
File[] files = file.listFiles();
查找以b为开头的文件
File dir = new File("C:");
FilenameFilter filter = new FilenameFilter() {
public boolean accept
(File dir, String name) {
return name.startsWith("b");
}
};
String[] children = dir.list(filter);
查看当前工作目录
String curDir = System.getProperty("user.dir");
遍历目录
public static void visitAllDirsAndFiles(File dir) {
System.out.println(dir);
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
visitAllDirsAndFiles(new File(dir, children[i]));
}
}
异常处理
e.toString()
e.getMessage()
e.getLocalizedMessage()
e.printStackTrace();
自建堆栈类
class Stack {
private int maxSize;
private char[] stackArray;
private int top;
public Stack(int max) {
maxSize = max;
stackArray = new char[maxSize];
top = -1;
}
public void push(char j) {
stackArray[++top] = j;
}
public char pop() {
return stackArray[top--];
}
public char peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
在链表(LinkedList)的开头和结尾添加元素
lList.addFirst("0");
lList.addLast("6");
lList.getFirst()
lList.getLast()
链表删除元素
lList.subList(2, 4).clear();
链表查找元素索引
lList.indexOf("2")
遍历链表
LinkedList<String> sites = new LinkedList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
for (int size = sites.size(), i = 0; i < size; i++) {
System.out.println(sites.get(i));
}
获取向量元素的索引值
Vector v = new Vector();
int index = Collections.binarySearch(v, "D");
获取向量最大元素
Collections.max(v)
链表修改
officers.set(2, "M");
链表反转
Collections.swap(v, 0, 4);
数组转集合
List<String> list = Arrays.asList(name);
set集合比较
Collections.min(set)
Collections.min(set, String.CASE_INSENSITIVE_ORDER)
String.CASE_INSENSITIVE_ORDER
比较的方法就是把两个String截成一个一个char的比较,每个char比较另一个String对应位置里的char,如果两个char都换成大写和都换成小写是一样的话,比较下一个,直到找到两个不一样的char,都转换成小写,然后return相差(ASCII里的值)。如果其中一个或者两个String都比较完了还没有同样的char的话,那就return两个String的长度差距。
HashMap values遍历
Collection cl = hMap.values();
Iterator itr = cl.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
集合的长度 .size()
集合打乱顺序
Collections.shuffle(list);
集合遍历
// 使用iterator遍历
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String value = it.next();
System.out.println(value);
集合反转
Collections.reverse(l);
集合设置只读
Collections.unmodifiableSet(set);
map的操作
tMap.keySet() Map.values() tMap.get(5) tMap.firstKey() tMap.lastKey() tMap.remove()
List 循环移动元素
Collections.rotate(list, 3);
遍历 HashTable 的键值
Enumeration e = ht.keys();
while (e.hasMoreElements()){
System.out.println(e.nextElement());
}
Collection包括 ArrayList LinkedList HashSet TreeSet LinkedHashSet HashMap TreeMap LinkedHashMap
集合替换元素
Collections.replaceAll(list, "one", "hundrea");
获取指定主机的IP地址
InetAddress address = null;
try {
address = InetAddress.getByName("www.runoob.com");
}
System.out.println(address.getHostName() + "=" + address.getHostAddress());
结果:www.runoob.com=222.73.134.120
查看端口是否已使用
String host = "localhost";
for (int i = 0; i < 1024; i++) {
try {
System.out.println("查看 "+ i);
Skt = new Socket(host, i);
System.out.println("端口 " + i + " 已被使用");
}
catch (UnknownHostException e) {
System.out.println("Exception occured"+ e);
break;
}
catch (IOException e) {
}
}
或者
boolean isAlive = false;
// 创建一个套接字
SocketAddress socketAddress = new InetSocketAddress(hostName, port);
Socket socket = new Socket();
// 超时设置,单位毫秒
int timeout = 2000;
log("hostName: " + hostName + ", port: " + port);
try {
socket.connect(socketAddress, timeout);
socket.close();
isAlive = true;
}
获取本机ip地址及主机名
InetAddress addr = InetAddress.getLocalHost();
addr.getHostAddress()
String hostname = addr.getHostName();
获取远程文件大小
int size;
URL url = new URL("http://www.runoob.com/wp-content/themes/runoob/assets/img/newlogo.png");
URLConnection conn = url.openConnection();
size = conn.getContentLength();
查看线程是否存活
tt.isAlive()
获取当前线程名称
Thread t = Thread.currentThread();
String name = t.getName();
获取线程状态
thread2.getState()
查看线程优先级
t.getPriority()
中断线程
Thread.interrupted()
获取所有线程
ThreadGroup currentGroup =
Thread.currentThread().getThreadGroup();
int noThreads = currentGroup.activeCount();
Thread[] lstThreads = new Thread[noThreads];
currentGroup.enumerate(lstThreads);
for (int i = 0; i < noThreads; i++)
System.out.println("线程号:" + i + " = " + lstThreads[i].getName());
}