广告
返回顶部
首页 > 资讯 > 后端开发 > Python >你知道Java的这些骚操作吗?
  • 606
分享到

你知道Java的这些骚操作吗?

2024-04-02 19:04:59 606人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、try with catch二、instance of三、不定项参数 ...四、跳出多层循环的label五、方法引用总结一、try with catch 还记得这样的代码吗?

一、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后边的()可以添加多行语句, 我上篇文章有展示:你肯定能看懂的Java IO相关知识总结

二、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);
  }

三、不定项参数 ...

格式如下:

参数个数可以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);
  }

四、跳出多层循环的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 比较好,你觉得呐?

五、方法引用

用Lambda表达式仅仅是调用一些已经存在的方法,除了调用动作外,没有其他任何多余的动作

图片


package org.pdool;
 
import java.util.ArrayList;
import java.util.List;
 

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的这些骚操作吗?的文章就介绍到这了,更多相关Java骚操作内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 你知道Java的这些骚操作吗?

本文链接: https://www.lsjlt.com/news/126924.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 你知道Java的这些骚操作吗?
    目录一、try with catch二、instance of三、不定项参数 ...四、跳出多层循环的label五、方法引用总结一、try with catch 还记得这样的代码吗?...
    99+
    2022-11-12
  • Java Spring @Autowired的这些骚操作,你都知道吗
    目录前言1. @Autowired的默认装配2. 相同类型的对象不只一个时3. @Qualifier和@Primary4. @Autowired的使用范围4.1 成员变量4.2 构造...
    99+
    2022-11-12
  • Java中的这些骚操作你不能不知道!!!
    目录1、try with catch2、instance of3、不定项参数 ...4、跳出多层循环的label5、方法引用总结:1、try with catch 还记得这样的代码吗...
    99+
    2022-11-12
  • Golang函数这些神操作你知道哪些
    「1. 用type关键字可以定义函数类型,函数类型变量可以作为函数的参数或返回值。」 package main import "fmt" func add(a, b int) i...
    99+
    2023-02-16
    Golang函数操作 Golang函数 Go 函数
  • 软件测试这些你知道吗?
    我们常常听说的一些测试专业术语,比如白盒、黑盒、单元测试,笔者在前几年对测试也仅仅停留在这个两个词汇上,更多的就不得而知了。后来在一家做跨境电商的公司学到了一些新术语,也见到了测试岗位的一些日常,比如冒烟测试、测试用例(TC)、回归测试、接...
    99+
    2023-06-05
  • 你知道在Java中Integer和int的这些区别吗?
    目录一、基本概念(重要)二、拓展三、new Integer()与new Integer()的比较四、Integer与new Integer()的比较五、Integer与Integer...
    99+
    2022-11-12
  • 这些MongoDB的隐藏操作你真的都掌握了吗?反正我是刚知道
    背景 最近公司系统还原用户时偶尔会出现部分用户信息未还原成功的问题,作为开发人员,最头疼的不是代码存在bug,而是测试发现了bug,但一旦我去重现,它就不见了。Are you kidding me 经过漫长的沟通与尝试,终于发现了...
    99+
    2019-02-08
    这些MongoDB的隐藏操作你真的都掌握了吗?反正我是刚知道
  • 你知道吗?这些LeetCode题目能让你成为高薪Java工程师!
    LeetCode是一个非常受欢迎的在线编程平台,提供了大量的算法题目和数据结构问题。它的题目难度不断提升,可以帮助人们提高编程技能,并且帮助人们准备面试。在Java工程师的职业生涯中,LeetCode的题目也是非常重要的。在这篇文章中,我...
    99+
    2023-11-08
    leetcode numy git
  • 简单的这些不为人知的小技巧你都知道吗?
      随着科技的发展,手机在生活越来越重要,微信渐渐成为我们生活中沟通的重要媒介。现在很多的中老年人也开始使用微信了,但是微信上有很多功能,他们都不会使用,如果我们不在他们的身边,他们又想使用微信的话,那...
    99+
    2022-10-18
  • Python的这些库,你知道多少?
    目录一、导读二、前戏三、Python标准库四、科学计算与统计五、数据处理与分析六、可视化七、机器学习、深度学习和强化学习八、自然语言处理一、导读 通常,开发大量原始代码是一个费时费力...
    99+
    2022-11-12
  • Vue事件的基本操作你知道吗
    目录1.事件的基本操作1.1v-on1.1.1v-on的小案例1.2事件修饰符1.2.1事件修饰符代码解析1.3键盘事件1.4计算属性(computed)1.5监视属性(watch)...
    99+
    2022-11-13
  • JavaScript的这5个技巧你知道了吗
    JavaScript的这5个技巧你知道了吗,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。谁要是说 JavaScript 是世界上比较好的语言,...
    99+
    2022-10-19
  • 你知道Java IDE中如何优化数组操作吗?
    Java作为一种广泛使用的编程语言,数组是程序中常见的数据结构之一。在Java IDE中,优化数组操作可以提高程序的性能和效率,使程序更加稳定和可靠。本文将介绍一些优化数组操作的方法和技巧,帮助Java开发者更好地使用数组。 一、使用增强f...
    99+
    2023-09-19
    ide 数组 npm
  • Java ThreadLocal有什么作用你知道吗
    目录ThreadLocal有什么作用测试代码当前线程只能操作当前ThreadLocal定义的局部变量,其他线程是访问不了。测试结果总结ThreadLocal有什么作用 ThreadL...
    99+
    2022-11-12
  • Java Springboot的目的你知道吗
    目录Spring-boot目的Spring如何简化开发第一个spring-boot程序总结Spring-boot目的 Spring是为了解决企业应用开发的复杂性而创建的,简化开发 S...
    99+
    2022-11-12
  • ASP和JavaScript实时教程:你知道这些技巧吗?
    在Web开发中,ASP和JavaScript是两个非常重要的技术。它们可以让你创建动态的网站,实现实时交互和数据处理。在本文中,我们将介绍一些ASP和JavaScript的实时教程和技巧,帮助你更好地使用它们。 ASP是一种服务端脚本语言...
    99+
    2023-09-27
    javascript 实时 教程
  • GO 开发必备?这些 IDE 框架你都知道吗?
    作为一名GO开发者,选择一款好用的IDE框架是非常重要的。一个优秀的IDE框架可以提高我们的开发效率和代码质量,同时也能让我们更加便捷地进行代码调试和管理。下面就让我们来了解一下几款常用的GO开发必备IDE框架吧! 1. GoLand Go...
    99+
    2023-07-29
    开发技术 ide 框架
  • java string对象上的操作,常见的用法你知道吗
    目录stringstring对象上的操作 1.判断是否为空2.size()/length(); 3.s[n]4.s1+s25.s1 = s26.s1 == s27...
    99+
    2022-11-12
  • Shell 框架的 Java 学习笔记:这些常用命令你都知道吗?
    Shell 是一种命令行解释器,可以帮助用户在命令行环境下执行各种操作。在 Java 中,我们可以使用 Shell 框架来实现一些常见的操作,如文件操作、进程管理等。本文将介绍一些常用的 Shell 命令,帮助读者更好地掌握 Shell ...
    99+
    2023-09-17
    学习笔记 shell 框架
  • GO语言和Laravel缓存:你知道这些关键字吗?
    缓存是每个Web开发人员都应该知道的一个概念。它是一种将数据存储在内存中的技术,以便在将来的请求中更快地访问它们。在本文中,我们将探讨GO语言和Laravel中的缓存以及使用缓存时的一些关键字。 GO语言中的缓存 GO语言有一个内置的缓存...
    99+
    2023-11-12
    关键字 缓存 laravel
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作