今天在看python相关的东西,看到各种骚操作,回头想了下<em>Java</em>有没有什么骚操作,整理下面几种,一起看一下吧 1、try with catch 还记得这样的代码吗?我们需要手动的关闭资源的流,不然会造成资源泄漏,因为虚拟机无法管理
2021-05-27 11:30:53
點贊再看,養成讚美的習慣,微信搜一搜【香菜聊遊戲】關注我
今天在看python相關的東西,看到各種騷操作,回頭想了下Java有沒有什麼騷操作,整理下面幾種,一起看一下吧
1、try with catch
還記得這樣的程式碼嗎?我們需要手動的關閉資源的流,不然會造成資源洩漏,因為虛擬機器無法管理系統資源的關閉,必須手動釋放。
public void manualClose(String fileName) { BufferedReader reader = null; try { String line; reader = new BufferedReader(new FileReader(fileName)); while ((line = reader.readLine()) != null) { ... } } catch (Exception e) { ... } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { ... } } }}
騷操作解救你:
public void autoClose(String fileName) { try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { ... } } catch (Exception e) { ... }}
可以看到,try-with-resources的比前一種方法明顯節省了很多程式碼,資源在try後邊的()中生成,在try結束後程序會自動關閉資源。
如果需要聲明多個資源,可以在try後面的()中,以;分隔;也就是說,try後邊的()可以新增多行語句, 我上篇文章有展示:《保姆系列五》原來JavaIO如此簡單,驚呆了
2、instance of
物件是否是這個特定類或者是它的子類的一個例項,返回一個布爾值。左邊是物件,右邊是類;當物件是右邊類或子類所創建物件時,返回true;否則,返回false。
用法:result = object instanceof class參數:Result:布爾類型。Object:必選項。任意物件表示式。Class:必選項。任意已定義的物件類。public interface Monster { } public static class Dinosaur implements Monster{ } public static void main(String[] args) { Dinosaur dinosaur = new Dinosaur(); System.out.println(dinosaur instanceof Monster); }
3、不定項參數 ...
格式如下:
參數個數可以0或者多個
public void method(int...args);
業務場景:
1、在業務開發的時候經常之前寫一個方法,但是後來業務變動了,需要增加參數,這個時候可以使用這種方式,多傳參數,呼叫的地方不需要覆蓋
2、如果一個方法的的不確定參數個數的情況,通常來說我們會過載,但是如果多了很麻煩,這個時候...可以出場了
//方法過載,解決參數個數不確定問題 public void method(){}; public void method(int i){}; public void method(int i, int j){}; public void method(int i, int j, int k){};優化之後的形式:public void method(int i,int ...args);
呼叫的三種方式
public void call(){ //1、 不使用變參 method(1); //2、 直接呼叫 method(1,2,23,4,5,6); //3、 陣列呼叫 int[] arr = {1,2,23,4,5,6}; method(5,arr); }
4、跳出多層迴圈的label
Java 中的標籤是為迴圈設計的,是為了在多重迴圈中方便的使用 break 和coutinue ,當在迴圈中使用 break 或 continue 迴圈時跳到指定的標籤處
public static void main(String[] args) { for (int i = 0; i < 5; i++) { labelA: for (int j = 0; j < 5; j++) { for (int k = 0; k < 5; k++) { if (k == 1) { break labelA; } System.out.println(1); } } } }
不推薦這種用法,雖然很騷,但是老老實實的一層一層break 比較好,你覺得吶?
5、方法引用
用Lambda表示式僅僅是呼叫一些已經存在的方法,除了呼叫動作外,沒有其他任何多餘的動作
package org.pdool;import java.util.ArrayList;import java.util.List;/*** 方法引用測試類* @author 香菜*/public class Trytest { static List<Player> playerList = new ArrayList<>(); // 靜態方法 public static void print(String s) { System.out.println(s); } static class Player { private String name; public Player(String name) { this.name = name; playerList.add(this); } private void printName() { System.out.println(name); } } public static void main(String[] args) { List<String> strList = new ArrayList<>(); strList.add("香菜"); strList.add("follow me"); // 1、靜態方法引用 strList.forEach(Trytest::print); // /2、物件方法引用 strList.forEach(System.out::println); // 3、建構函式 strList.forEach(Player::new); // 4、物件方法 playerList.forEach(Player::printName); }}
總結:
1、在try結束後程序會自動關閉資源
2、instance of 必須是子類
3、參數個數可以0或者多個,重構程式碼利器
4、使用 break 或 continue 迴圈時跳到指定的標籤處
5、方法呼叫是除了呼叫動作外,沒有其他任何多餘的動作
你還知道哪些Java的騷操作?歡迎留言給我,一起交流。
,https://blog.csdn.net/perfect2011/article/details/117164678
相關文章
今天在看python相关的东西,看到各种骚操作,回头想了下<em>Java</em>有没有什么骚操作,整理下面几种,一起看一下吧 1、try with catch 还记得这样的代码吗?我们需要手动的关闭资源的流,不然会造成资源泄漏,因为虚拟机无法管理
2021-05-27 11:30:53
1、<em>iPad</em> Pro 2020:直降1000元,12期息费7折 推荐理由:A12Z宝刀未老、120Hz自适应刷新屏、FaceID 如果说要买平板,相信大部分人都会选择<em>iPad</em>,不过<em>iPad</em>日常价格对于许多人来说都有点贵。现在<em>i
2021-05-27 11:30:46
最近小师妹在后台陆续收到很多关于<em>excel</em>公式操作的提问,于是乎索性把和<em>excel</em>公式相关的操作来一次大整理,之前在网上查的总是杂七杂八的没这么全,总算给大家找到一份很OK的了,这下小师妹可轻松啦~<em>E
2021-05-27 11:30:29
「来源: |<em>Excel</em>不加班 ID:<em>Excel</em>bujiaban」粉丝的疑问,在筛选区域,复制粘贴出错,有什么好的方法?关于筛选复制粘贴,可以分成好多种情况,跟着卢子一起来看看。1.筛选区域复制到新表格 高版本,直接复制粘贴就
2021-05-27 11:30:05
实验环境:对于一幅320x256的RGB-D输入图来说,用NVIDIA TITAN X GPU预测表面法线和边界遮挡需要0.3s。在<em>Intel</em> Xeon 2.4GHz CPU上求解线性方程需要1.5秒。显而易见,这是一个牺牲时间换取图像质量的算法!实验结果0
2021-05-27 11:00:57
在排名前15的半导体公司中,有13家第一季度销售额同比增长率达两位数,而销售额下滑的只有<em>英特尔</em>(<em>intel</em>)一家。 剔除<em>英特尔</em>,其余14家公司的销售额增长率上升了29%,这说明了<em>英特尔</em>
2021-05-27 11:00:55