`
lixuan74
  • 浏览: 16380 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java基础题目

    博客分类:
  • java
阅读更多
网上发现一个很有意思的问题   
1》   Integer i1 = 128; 
        Integer i2 = 128; 
        int i3 = 128; 
        int i4 = 128; 
        System.err.println(i1 == i2);//(1)  false
        System.err.println(i1 == i3);//(2)  true
        System.err.println(i2 == i3);//(3)  true
        System.err.println(i3 == i4);//(4) true
        System.out.println(i1.equals(i2));//true
------
     Integer i1 = 127; 
        Integer i2 = 127; 
        int i3 = 127; 
        int i4 = 127; 
        System.err.println(i1 == i2);//(1)  true
        System.err.println(i1 == i3);//(2)  true
        System.err.println(i2 == i3);//(3)  true
        System.err.println(i3 == i4);//(4) true
        System.out.println(i1.equals(i2));//true

这是什么原因呢?

1.常量池的知识

和String的对象池一样,几种整数基础类型的包装类型也有对象池机制。也就是说用Integer int1 = 30这种方式声明一个Integer对象时会先到对象池中找有没有值为30的对象,如果有直接拿来用,如果没有则重新创建一个对象放入对象池中。

缓存范围[-128到127],超出此范围的不会被缓存。而128刚好超出,所以i1 == i2的结果为false,如果在缓存范围内,那i1 == i2的结果就为true

2.自动装箱自动折箱的知识

System.err.println(i1 == i3);//(2)
System.err.println(i2 == i3);//(3)
这两行代码都隐式做了折箱操作

二。InputStream  的:
InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len) 三个方法的读取效率是一直的,因为read(byte[] b),read(byte[] b, int off, int len) 都是基于read() 方法实现的。
FileInputStream extends InputStream
但是InputStream的available方法是返回0的。
FileInputStream  覆盖了父类的available方法,实现是一个native
public native int available() throws IOException;

转载别人的一段:
在网络流中如果不使用任何标记,是不知道流是否结束的。但在读到网络流时,我们是可以知道这次可以读多少字节的内容,方法就是使用inputStream. available (),但一定要在调用read()至少一次之后,也就是说available方法一定要在read后调用,不然就只能得到零值。注,这里所的是网络传输中的流是这样,但文件流不是这样的,文件流可以直接使用available来判断还有多少字节的内容可读取。


InputStream的available()含义:返回此输入流在不受阻塞情况下能读取的字节数。网络流与文件流不同的关键就在于是否“受阻”二字,网络socket流在读取时如果没有内容read()方法是会受阻的,所以从socket初始化的输入流的available也是为零的,所以要read一字节后再使用,这样可用的字节数就等于 available + 1。但文件读取时read()一般是不会受阻的,因为文件流的可用字节数 available = file.length(),而文件的内容长度在创建File对象时就已知了。
注:类InputStream的available方法总是返回0。
分享到:
评论

相关推荐

    java基础题目代码

    这份"java基础题目代码"压缩包提供了适合初学者实践的编程题目,帮助他们巩固和理解Java的基本概念。下面,我们将详细讨论这些知识点。 1. **变量与数据类型**:Java中的数据类型分为两大类——基本类型和引用类型...

    Java基础题目.html

    Java基础题目.html

    张琪java基础题目练习题(包括数组和流程控制语句)

    在"张琪java基础题目练习题(包括数组和流程控制语句)"中,你将有机会深入理解和应用这些基础知识。通过解决这些练习题,你可以强化对数组操作和流程控制的理解,进一步提升编程能力。这些练习可能涵盖如何有效地遍历...

    黑马培训营Java基础题目答案打包

    操蛋的黑马培训营,搞一个培训机构还搞那么多面试题目,还要在博客上发标他妹的10篇日志,还要在黑马论坛获得25分技术分,还要面试...............在这里分享一下黑马Java基础答案!算是为后来人铺路吧!

    java基础题目.zip

    通过一些简单的题目,让学习编程的人通过思考掌握Java条件语句,循环,数组,函数的使用。 条件语句有三种if简单语句,if - else 语句 和 if else if语句,三个语句的意思可以这样想:如果... , 如果...否则... , ...

    java基础题目.txt

    java基础测试 1、 为什么需要配置path,什么时候需要classpath? 2、 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。 3、 编写一个函数,函数内输出一个字符串,并在

    Educoder题目:Java入门 - 数组进阶答案解析.md

    Educoder题目:Java入门 - 数组进阶答案解析

    java基础编程题目总汇

    Java基础编程题目总汇是针对Java初学者设计的一系列练习题,旨在巩固和深化Java编程基础知识。这些题目覆盖了从基本语法、数据类型到控制结构、类与对象、异常处理等多个核心领域,对于想要系统性地提升Java编程技能...

    java题目(简)

    通过对上述知识点的分析,我们可以看出这份Java基础题目集涵盖了类的实例化、命令行参数的使用以及基本的数学运算,这些都是Java编程中的核心概念。理解并掌握这些知识点对于初学者来说至关重要,它们构成了进一步...

    java基础习题.txt

    涉及几个模块:变量、运算符和类型转换;分支结构;多分支结构;循环结构;循环嵌套;数组。愿意尝试的下载下来练下手。

    JAVA基础经典测试

    "JAVA基础测试(二).txt"和"JAVA基础测试题(一).txt"很可能是两个包含了多种Java基础题目和解答的文本文件,涵盖了Java语法、面向对象特性、异常处理、集合框架、输入输出流等关键知识点。这些测试题通常包括选择...

    2021年面试必备100道经典Java基础题.doc

    在这篇文章中,我们将通过Java基础题目来总结Java的基础知识点。这些知识点涵盖了Java的基本语法、数据类型、运算符、控制结构、数组、方法、排序算法等方面。 数组 在Java中,数组是一种基本数据类型,用于存储一...

    java 基础考试题目 带答案

    java 基础 考试题目 大学 附加答案详解 A卷 corejava

    java编程题目 有答案

    但我将基于【标题】、【描述】、【标签】中提供的信息,以及【部分内容】的文字描述,尽可能详细地讨论Java编程题目的相关知识点。 Java作为一门广泛使用的编程语言,在编程教育和实际开发中占据重要地位。编程题目...

    java。基础题目 适合新手

    这些题目涵盖了Java编程的基础知识,包括循环控制结构(for、while)、条件判断(if-else、switch)、数学逻辑运算和数组处理。以下是每个题目涉及的知识点的详细解释: 1. 求1-100之间所有偶数和奇数之和: - ...

    java笔试题大全(java笔试,面试笔试,逻辑题,各大公司题目,java基础)

    Java笔试题大全主要涵盖了几大核心领域,包括Java基础知识、EJB、代码与编程实践、线程编程以及针对各大公司的具体面试题目。这些文件旨在帮助准备Java相关职位的求职者全面复习并提升自己的技能。 首先,Java基础...

Global site tag (gtag.js) - Google Analytics