为了账号安全,请及时绑定邮箱和手机立即绑定

Java 中的“private static final”是什么意思?

Java 中的“private static final”是什么意思?

holdtom 2021-08-25 10:45:04
我对 android 很陌生,我只是在摸索它的表面。当我浏览一些教程时,我遇到了这个类来下载文件。我能够理解其他代码,但我无法理解是什么  private static final int  MEGABYTE = 1024 * 1024;做?这真的有必要吗?如果它没有被声明为 First。下面是代码public class FileDownloader {    private static final int  MEGABYTE = 1024 * 1024;    public static void downloadFile(String fileUrl, File directory){        try {            URL url = new URL(fileUrl);            HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();            //urlConnection.setRequestMethod("GET");            //urlConnection.setDoOutput(true);            urlConnection.connect();            InputStream inputStream = urlConnection.getInputStream();            FileOutputStream fileOutputStream = new FileOutputStream(directory);            int totalSize = urlConnection.getContentLength();            byte[] buffer = new byte[MEGABYTE];            int bufferLength = 0;            while((bufferLength = inputStream.read(buffer))>0 ){                fileOutputStream.write(buffer, 0, bufferLength);            }            fileOutputStream.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}这一定是非常愚蠢的问题,但我真的很想知道如何以及为什么?
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

private static final声明意味着,该值被声明为常量。它没有什么特别之处,将硬编码值作为常量放置只是一种很好的编码习惯。这是为了代码的可读性和可维护性。

您的代码基本上是创建一个1 MB缓冲区来下载文件。

这意味着在下载文件时,首先将 1 MB 下载到您的 RAM 中,然后将该部分复制到文件输出流(磁盘),这个过程将重复,直到所有内容都下载完毕。请注意,如果所有内容都下载到 RAM,您的设备可能会耗尽内存并且应用程序会抛出OutOfMemoryError. 另请注意,您可以为缓冲区选择任何值而不是 1 MB。


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 1570 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信