精华内容
下载资源
问答
  • Java Try with Resources

    千次阅读 2018-05-01 19:28:30
    Java7之前,没有自动资源管理,我们应该在我们工作完成后明确地关闭资源。 通常,它是在try-catch语句finally块中完成。 当我们忘记关闭资源时,这种方法会导致内存泄漏和性能问题。 before Java 7: ...

    资源是一个程序利用后必须关闭的对象。 例如,用于数据库连接的文件资源或JDBC资源或套接字连接资源。 在Java7之前,没有自动资源管理,我们应该在我们的工作完成后明确地关闭资源。 通常,它是在try-catch语句的finally块中完成的。 当我们忘记关闭资源时,这种方法会导致内存泄漏和性能问题。

    before Java 7:

    try{
        //open resources like File, Database connection, Sockets etc
    } catch (FileNotFoundException e) {
        // Exception handling like FileNotFoundException, IOException etc
    }finally{
        // close resources
    }

    Java 7 try with resources implementation:

    try(// open resources here){
        // use resources
    } catch (FileNotFoundException e) {
        // exception handling
    }
    // resources are closed as soon as try-catch block is executed.

    接下来分别看看Java6和Java7的简单例子:

    Java 6 :

    public class Java6ResourceManager {
    
        public static void main (String[] args) {
            BufferedReader bufferedReader = null;
            try {
                bufferedReader = new BufferedReader(new FileReader("C:\\Users\\10944\\Desktop\\python.txt"));
                System.out.println(bufferedReader.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (bufferedReader != null) {
                        bufferedReader.close();
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    
    }

    Java 7:

    public class Java7ResourceManager {
    
        public static void main (String[] args) {
            try (BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\10944\\Desktop\\python.txt"))) {
                System.out.println(bufferedReader.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }

    Java try with resources 的好处:

    1. 代码的可读性更好,更易于编写代码
    2. 自动化的资源管理
    3. 代码的行数被减少
    4. 不需要使用finally块来关闭资源
    5. 我们可以通过在try-with-resources中使用分号来间隔多个资源,例子如下:
    try (BufferedReader br = new BufferedReader(new FileReader(
                    "C:\\python.txt"));
                    java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(FileSystems.getDefault().getPath("C:\\journaldev.txt"), Charset.defaultCharset())) {
                System.out.println(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }

    7.当我们在try-with-resources中使用多个资源的时候,try-with-resources会在关闭时通过逆序的方式关闭,从而避免出现资源依赖的问题。

    Java 7 介绍了一个新的接口:java.lang.AutoCloseable。任何资源在用于 try-with-resources 时,都需要实现这个接口,否则Java编译器会抛出编译问题。

    以下是个简单的例子:

    public class Java7ResourceManagement {
    
        public static void main(String[] args) {
    
            try (MyResource mr = new MyResource()) {
                System.out.println("MyResource created in try-with-resources");
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("Out of try-catch block.");
        }
    
        static class MyResource implements AutoCloseable{
    
            @Override
            public void close() throws Exception {
                System.out.println("Closing MyResource");
            }
    
        }
    }

    上面的程序运行结果是:

    MyResource created in try-with-resources
    Closing MyResource
    Out of try-catch block.

    从上面的输出可以清晰的看出,只要try-catch模块完成,资源关闭的方法就会被调用。

    Try with Resources Exceptions:

    在异常的情况下,try-catch-finally 和 try-with-resources 是有不同的地方的。

    如果一个异常在 try 块和 finally 块中被抛出,最终方法返回的将是在finally快块中抛出的异常。

    而对 try-with-resources 而言,如果一个异常在 try 块和 try-with-resources 中被抛出,那么方法返回的将是在 try 中抛出的异常。

    以下讲一个简单的例子:

    public class Java7ResourceManagerDiff {
    
        public static void main (String[] args) throws Exception {
            try {
                tryWithResourceException();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
    
            try {
                normalTryException();
            }catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    
    
        private static void normalTryException () throws Exception {
            MyResource myResource = null;
            try {
                myResource = new MyResource();
                System.out.println("MyResource created in block!");
                if (true) {
                    throw new Exception("Exception in try block");
                }
            } finally {
                if (myResource != null) {
                    myResource.close();
                }
            }
        }
    
        private static void tryWithResourceException () throws Exception{
            try (MyResource myResource = new MyResource()) {
                System.out.println("MyResource created in try-with block!");
                if (true) {
                    throw new Exception("Exception in try block");
                }
            }
        }
    
        static class MyResource implements AutoCloseable {
    
            @Override
            public void close() throws Exception {
                System.out.println("Closing MyResource!");
                throw new Exception("Exception in Closing");
            }
        }
    
    }

    上面的输出是:

    MyResource created in try-with block!
    Closing MyResource!
    Exception in try block
    MyResource created in block!
    Closing MyResource!
    Exception in Closing

    原文:
    https://www.journaldev.com/592/java-try-with-resources

    展开全文
  • java startsWith和endsWith用法

    千次阅读 2013-05-26 10:26:33
    public class StringDemo{ public static void main(String args[]){  String s1="this is my original string";  String sd="original";... if (s1.startsWith(sd))  ...//startsWith()方法

    public class StringDemo{    

    public static void main(String args[]){
          String s1="this is my original string";
          String sd="original";
          if (s1.startsWith(sd)) 
    //startsWith()方法判断字符串s1是否从字符串sd开始
             s1=s1.substring(sd.length());
          else
             if(s1.endsWith(sd)) 
       //endWith()方法判断字符串s1是否从字符串sd结尾
                 s1=s1.substring(0,s1.length()-sd.length());
             else
             {
                   int index=s1.indexOf(sd); 
    //indexOf()搜索字符或子字符串首次出现,这里的index等于11
                   if(index!=-1)
                   {
                      String s2=s1.substring(0,index); 
    //从字符串s1的首字符开始,取index个字符
                      String s3=s1.substring(index+sd.length()); 
    //取字符串s1的第19个字符后面的字符串
                      s1=s2+s3;
                   }
                   else
                   System.out.println("string /""+sd+"/" not found");
             }
             System.out.println(s1);
          }
    } 

    展开全文
  • java】Try With Resources

    2019-06-23 20:18:15
    今天和大家聊一下java “try with resource”用法。通过“try-with-resource”实现资源自动管理,是java 7一个重要特性。 (译者注:此处resource,指程序运行中打开资源,比如:java strea...

         英文原文:https://www.journaldev.com/592/java-try-with-resources

         今天和大家聊一下java中的 “try with resource”用法。通过“try-with-resource”实现资源自动管理,是 java 7的一个重要特性。

       (译者注:此处resource,指程序运行中打开的资源,比如:java stream、socket 等)

     

    目录

        1.try with resource 介绍

            1.1 java 6 资源管理 举例

            1.2 java 7 try with resource 举例 

        2.java try with resource 的好处

        3.try with resource 的 异常处理

     

    1.try with resource

           本文"resource"指:程序运行结束时,同时必须要关闭的对象。比如,文件资源(java io)或者 数据库连接的JDBC资源 或者 socket连接资源。

           在java 7之前,“自动资源管理”的概念是不存在的,且当此“资源”在代码中完成任务后,需明确在try-catch-finally结构的finally块关闭它。当忘记手动关闭资源时,通常会导致内存泄漏以及性能损失。

          下面通过一段伪代码来理解 try-with-resource 特性。

           1)java 7 之前

    try{
    	//open resources like File, Database connection, Sockets etc
    } catch (FileNotFoundException e) {
    	// Exception handling like FileNotFoundException, IOException etc
    }finally{
    	// close resources
    }

        2)java 7 实现 try-with-resource

    try(// open resources here){
        // use resources
    } catch (FileNotFoundException e) {
    	// exception handling
    }
    // resources are closed as soon as try-catch block is executed.

     

         下面分别使用java6及更老的版本 和 java7 的try-with-resource 来从文件中读取数据并打印。

          java 6 资源管理示例:

    package com.journaldev.util;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class Java6ResourceManagement {
    
    	public static void main(String[] args) {
    		BufferedReader br = null;
    		try {
    			br = new BufferedReader(new FileReader("C:\\journaldev.txt"));
    			System.out.println(br.readLine());
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (br != null)
    					br.close();  //attention here
    			} catch (IOException ex) {
    				ex.printStackTrace();
    			}
    		}
    	}
    }

          java 7 try-with-resource 示例:

    package com.journaldev.util;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class Java7ResourceManagement {
    
    	public static void main(String[] args) {
    		try (BufferedReader br = new BufferedReader(new FileReader(
    				"C:\\journaldev.txt"))) {
    			System.out.println(br.readLine());
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }

     

    2.java try with resource 的好处

         1)代码可读性更强且容易编写

         2)资源自动管理(释放)

         3)代码行数减少

         4)不再需要finally代码块即可释放资源

         5)在try-with-resource声明中,可以通过分号分隔来开启多个资源。如下代码所示:

    try (BufferedReader br = new BufferedReader(new FileReader(
    				"C:\\journaldev.txt"));
    				java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(FileSystems.getDefault().getPath("C:\\journaldev.txt"), Charset.defaultCharset())) {
        System.out.println(br.readLine());
    } catch (IOException e) {
        e.printStackTrace();
    }

         6)当try-with-resource中打开了多个资源,会按照相反的顺序关闭来避免依赖产生的问题。

     

           java 7 介绍了新的接口“java.lang.AutoCloseable”。如果使用try-with-resource,则必须实现AutoCloseable接口,否则编译时将抛出异常。参考如下代码:

    package com.journaldev.util;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.nio.file.FileSystems;
    
    public class Java7ResourceManagement {
    
    	public static void main(String[] args) {
    
    		try (MyResource mr = new MyResource()) {
    			System.out.println("MyResource created in try-with-resources");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		System.out.println("Out of try-catch block.");
    	}
    
    	static class MyResource implements AutoCloseable{
    
    		@Override
    		public void close() throws Exception {
    			System.out.println("Closing MyResource");
    		}
    
    	}
    }

          上述程序的输出如下:

    MyResource created in try-with-resources
    Closing MyResource
    Out of try-catch block.

            如上可见,当try-catch块执行完成后,资源回收的方法被自动调用了。

     

    3.try with resource 的 异常处理

         下面说明“try-catch-finally”和“try-with-resources”在异常处理上的不同。

          1)如果在try块和finally块同时抛出异常,方法返回的异常信息来源于finally块。

          2)对于“try-with-resources”,如果在try块和“try-with-resources”中同时抛出异常,方法返回的异常,是try块中的异常。

         为了更好的理解2种不同,参考如下代码:

    package com.journaldev.util;
    
    public class Java7ResourceManagement {
    
    	public static void main(String[] args) throws Exception {
    		try {
    			tryWithResourceException();
    		} catch (Exception e) {
    			System.out.println(e.getMessage());
    		}
    		try {
    			normalTryException();
    		} catch (Exception e) {
    			System.out.println(e.getMessage());
    		}
    	}
    
    	private static void normalTryException() throws Exception {
    		MyResource mr = null;
    		try {
    			mr = new MyResource();
    			System.out.println("MyResource created in the try block");
    			if (true)
    				throw new Exception("Exception in try");
    		} finally {
    			if (mr != null)
    				mr.close();
    		}
    
    	}
    
    	private static void tryWithResourceException() throws Exception {
    		try (MyResource mr = new MyResource()) {
    			System.out.println("MyResource created in try-with-resources");
    			if (true)
    				throw new Exception("Exception in try");
    		}
    	}
    
    	static class MyResource implements AutoCloseable {
    
    		@Override
    		public void close() throws Exception {
    			System.out.println("Closing MyResource");
    			throw new Exception("Exception in Closing");
    		}
    
    	}
    }

          上述程序的输出为:

    MyResource created in try-with-resources
    Closing MyResource
    Exception in try
    MyResource created in the try block
    Closing MyResource
    Exception in Closing

          由此证明了上述在异常处理上的不同。

     

         that's all for the java 7 try-with-resources.

         2019.06.23 周日晚

    展开全文
  • startsWith(String str)就是检查形参参数是否与你要检查字符串开头相同,返回是布尔值,形参参数可以是字符,也可以是字符串 startsWith(Sring str,int Index)则是从你要比较原字符串指定下标开始和形参作...

    startsWith(String str)就是检查形参参数是否与你要检查的字符串开头相同
    返回的是布尔值,形参参数可以是字符,也可以是字符串

    startsWith(Sring str,int Index)则是从你要比较的原字符串的指定下标开始和形参作比较
    这里边呢str.startsWith(String str)和str.startsWith(string str,0)是没有区别的

    展开全文
  • Java startsWith()

    2017-04-20 17:00:32
    startsWith()startsWith():方法确定字符串是否以指定字符串字符开头,根据需要返回true或false。 废话不多说,上代码。 eg:public class FirstDemo { public static void main(String[] args){ String str, ...
  • Java startsWith() 方法

    千次阅读 2018-12-24 10:37:01
    startsWith() 方法用于检测字符串是否以指定前缀开始。 语法 public boolean startsWith(String prefix, int toffset) 或 public boolean startsWith(String prefix) 参数 prefix -- 前缀。 ...
  • Java的@RunWith和@SpringBootTest注解详解

    千次阅读 2020-01-25 16:18:55
    当一个类用@RunWith注释或继承一个用@RunWith注释类时,JUnit将调用它所引用类来运行该类中测试而不是开发者去在junit内部去构建它。我们在开发过程中使用这个特性。 @SpringBootTest 配置文件属性读取 可以...
  • Java 7 编译器和运行环境支持新 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。新语句支持包括流以及任何可关闭资源,例如,一般我们会编写如下代码来释放资源:...
  • java try with resources方式关闭资源

    千次阅读 2018-07-23 16:01:38
    在我们使用资源时,一般资源使用完毕,都需要把资源关闭掉,在JDK7之前,我们一般都是使用try-catch-finally在finally中进行资源关闭。 示例如下: public static void test1(){ FileInputStream ins = null...
  • JavastartsWith()方法

    千次阅读 2020-01-14 14:14:15
    startsWith()方法一般用于检测某请求字符串是否以指定前缀开始。 例如:服务器要判断某个请求是否合规,首先确定协议,比如http、ftp等,这时,就可以用startsWith()。 两种语法: /* *prefix 前缀 *...
  • 对JavaScript 扩张,类似Java中this.jsonString.startsWith(prefix) 判断字符串是否是以str为开头 */ String.prototype.startWith=function(str){ if(str==null||str==""||this.length==0||str.length>this....
  • Java try-with-resource

    千次阅读 2019-04-29 13:47:35
    Try-with-resourse语句类似于Python中的with语句,都是自动释放资源,而不用像传统的try-catch-finally一样必须使用finally关闭资源,而且当资源释放比较多的时候,会出现嵌套关闭资源的现象. 下面是一些具体使用方法 ...
  • java 1.7之后,增加了 try-wit-resource语法糖,大概用法就是在try中声明一个或者多个流,会在try块代码执行完成后自动关闭流,不用再写finally进行手都关闭。但是你知道,里面声明资源其实是被final修饰...
  • java - try with resource

    千次阅读 2018-03-09 10:25:52
    try with resource有个比较好的特性,...例如:try (Session session = driver.session()) {}但是这是1.5之后的新特性,需要设置java的language level为1.5以上。https://docs.oracle.com/javase/tutorial/essentia...
  • Java Persistence with MyBatis 3(中文版)

    千次阅读 2017-09-24 16:40:21
    译者话  前段时间由于工作和学习需要,我打算深入研究MyBatis框架。于是在网上查找关于MyBatis教程,发现国内网上关于... 无意间发现了这本《JavaPersistence with MyBatis 3》,它比较全面地讲述了MyBati
  • JAVA Swith语句使用

    千次阅读 2014-10-15 09:23:22
    根据一个整数表达式值,switch 语句可从一系列 代码选出一段执行。它格式如下: switch(整数选择因子) { case 整数值1 : 语句; break; case 整数值2 : 语句; break; case 整数值3 : 语句; break; case 整数值4...
  • 本文采用maven构建一个简单的java工程。 工程描述 你将实现一个显示时间应用,并采用maven构建它。 准备工作 大约15分钟一个文本编辑器或者IDEJDK 6或更高 如何完成 如同所有Spring入门教程,你可以选择一步...
  • Java SE7中引入了try-with-resources语句,它在try中声明一个或多个资源 try 语句。一个资源作为一个对象,必须在程序结束之后随之关闭。 try-with-resources语句确保在语句最后每个资源都被关闭 。
  • 这两天为公司搞持续集成,试验了一下cruisicontrol不太成功,竟然编译不了,不知何故。打算再试验一下anthill.看了看这本书Java Development with Ant, 相当不错!manning出版。ant从入门到精通。
  • Java中startWith方法使用!

    万次阅读 多人点赞 2010-05-20 15:45:00
    今天看Java代码时,看到了字符串有一个方法是startsWith(String str)当时觉得见名之意,很简单吗,然后就自己动手做了一下,没想到发现了一个startsWith()方法重载,startsWith(String str,int Index),当时上网去查...
  • java中startsWith与endsWith用法

    万次阅读 2015-07-03 11:19:57
    if(a.startsWith(b)) //判断字符串a 是不是以字符串b开头....startsWith方法测试此字符串从指定索引开始子字符串是否以指定前缀开始。 语法1 public boolean startsWith(String prefix , int toffset) 
  • 本教程带领大家构建一个简单的java工程  What you’ll build 我们将创建一个简答app然后用Gradle构建它  What you’ll need  大约15分钟  一个你喜欢编辑器或者是IDE  JDK6 或者更新 How to complete ...
  • try-with-resources引入背景 很多Java程序都需要操作一些资源,如文件、流(streams)、套接字(sockets)和数据库连接(database connections)。操作这些资源时候得很小心,因为它们操作时候获取了操作系统...
  • 1、startsWith()方法 用于检测字符串是否以指定前缀开始。 语法: public boolean startsWith(String prefix, int toffset) public boolean startsWith(String prefix) 参数 prefix -- 前缀。 toffset -- ...
  • Java之split用法与startWith的用法

    千次阅读 2016-08-11 17:36:20
    于是想到了在java.lang下String.split()方法。但是结果却不可以,坑死宝宝了。 看一下Java API 看一下代码 通过上面两张图我们可以看出,它返回是一个字符串数组。 stringObj.split([separator,[limit]...
  • with-Java 项目预览Coding-with-Java一、Java 从入门到精通学习笔记1.1 Java SE篇 (2020 6 2 更新)1.2 Java EE篇1.3 Spring 全家桶系列 (2020 6 2 更新)二、项目预览2.1 Java SE 篇章2.1.1 基于 Java 实现简单注册...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,295
精华内容 8,118
关键字:

java的with

java 订阅