Java常用方法合集

本人看菜鸟教程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());
   }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值