文章目录

  • 1、Java ==和equals有什么区别?
  • 2、Java 的运行机制
  • 3、实现线程的两种方式
  • 4、getResource方法
  • 5、删除字符串最后一个字符的几种方法
  • 6、字符串分割[split()]和截取[substring()]
  • 7、判断一个字符串是否包含某个字符
  • 8、String方法的总结
  • 9、List集合实现倒倒序排列
  • 10、JDK指定D盘安装及环境变量配置
  • 11、bug记录
  • 12、BufferReader中的readLine()方法
  • 13、java.lang.NullPointerException - 如何处理空指针异常
  • 14、报错:Parameter index out of range (1 > number of parameters, which is 0).
  • 15、字符串怎么转换成整数
  • 16、 API中文版
  • 17、InputStream.read(),response.getOutputStream(),OutputStream().write【IO流】
  • 18、Map.keySet()、Map.put()、Map.get()【Map类、Set类】
  • 19、Arrays.toString(string[]) + Enumeration.hasMoreElements()【Arrays类、Enumeration接口】
  • 20、如何产生随机数(Random类)
  • 21、如何实现保留两位小数 — DecimalFormat

喜欢记得点个赞哟,我是王睿,很高兴认识大家!

1、Java ==和equals有什么区别?

1、概念分析

基本数据类型 == 比较的是值
引用数据类型 == 比较的是内存地址

  • “==” :判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。

  • equals():判断两个对象的内容是否相等。

2、代码分析

"==" 比较基本数据类型
结果:相等

     int num1=20,num2=20;if(num1==num2) System.out.println("相等");else System.out.println("不相等");

"==" 比较引用数据类型
结果:不相等

     String str1="123";String str2 = new String("123");if(str1==str2) System.out.println("相等");else System.out.println("不相等");

equals() 比较引用数据类型
结果:相等

     String str1="123";String str2 = new String("123");if(str1.equals(str2)) System.out.println("相等");else System.out.println("不相等");

2、Java 的运行机制

一丶讲之前,我先给大家提个问题:

Java究竟是编译型语言还是解释型语言呢?

二丶Java 的运行机制

三丶解答提问
答案:Java是解释性语言

Java虚拟机在这里担当的是解释器的角色,他会在程序运行时编译后的 class 文件解释成计算机可识别的二进制文件数据后再执行。

3、实现线程的两种方式

方式一:继承 Thread 类
继承 Thread 类创建一个新的线程语法:

public class ThreadTest extends Thread{@Override            public void run() {// TODO Auto-generated method stubsuper.run();}
}

别怕,我们一层层分析。
当我们的自定义类继承了 Thread 类后,必须要实现run()方法。要算是一个有意义的线程
为什么这么说?
简单理解:
把线程要做的事情放到run()方法里,当线程启动后,会直接执行run()方法里面的所有代码。
好,那么问题来了。

提问:这个run()方法究竟是从哪里来的呢?
问得很好,run() 方法上方有一个@Override 标记,代表它是一个抽象方法,我们都知道子类是必须要继承父类 Thread的抽象方法的,而 Thread 又实现了Runnable 接口,接口中的方法全都是抽象方法,且不能有方法体,所以说,知道怎么来的了吧!

要想让线程能够得到执行,我们需要启动线程,这时候线程才能拿到cpu时间片从而才能启动
启动线程语法:

public static void main(String[] args){new ThreadTest().start();
}

例1:

public class ThreadTest extends Thread {     //继承 Thread 类private int count = 10;           public void run() {                 //重写 run() 方法while(true) {System.out.print(count + " ");     //打印 count 变量if(--count == 0) {                   //使 count 变量自减,当自减为 0 时,退出循环return;}}}public static void main(String[] args) {new ThreadTest().start();}}class A extends Thread{@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();}
}

结果为:

10 9 8 7 6 5 4 3 2 1

重要结论:
如果不调用start() 方法,线程永远都不会启动,在主方法没有调用start()方法之前,Thread 对象只是一个实例,而不是一个真正的线程。

为什么要有第二种启动线程的方式
学习第二种方式之前,我们需要知道,为什么有1种实现了以后还要搞第二种不是浪费时间吗,不,开发者可比我们聪明多了,针对不同的情景,我们会使用不同的方式去实现。

具体原因:
如果程序员需要继承其他类(非Thread 类),因为Java不能支持多继承,此时还要使当前类实现多线程,那么就可以通过 Runnable 接口来实现。

所以我们知道了第二种方式诞生原因后,就一起来学习吧

方式二:实现 Runnable 接口
语法:

public class Thread extends Object implements Runnable

其实 Thread 类它实现了 Runnable 对象,其中的 run()方法正是对 Runnable 接口中的 run() 方法的具体实现。

实现 Runnable 接口创建线程的流程图

例1:

import java.awt.Container;
import java.net.URL;
import javax.swing.*;public class SwingAndThread extends JFrame {private JLabel jl = new JLabel();     //声明 JLabel 对象private static Thread t;              //声明线程对象private int count = 0;                 //声明计数变量private Container container = getContentPane();            //声明容器public SwingAndThread() {setBounds(300,200,250,100);      //绝对定位窗体大小与位置container.setLayout(null);      //使窗体不适用任何布局管理器URL url = SwingAndThread.class.getResource("1.png");  //获取图片的URLIcon icon = new ImageIcon(url);     //实例化一个 Iconjl.setIcon(icon);    //将图标放置再标签中jl.setHorizontalAlignment(SwingConstants.LEFT);     //设置图片在标签的最左方jl.setBounds(10, 10, 200, 50);     //设置标签的位置与大小jl.setOpaque(true);     t = new Thread(new Runnable() {                //定义匿名内部类,该类实现 Runnable 接口@Overridepublic void run() {                      //重写run() 方法while(count <= 200) {               //设置循环条件jl.setBounds(count, 10, 200, 50);  //将标签的横坐标用变量表示try {Thread.sleep(1000);           //将线程休眠 1000 毫秒}catch (Exception e) {e.printStackTrace();}count += 30;                //使横坐标每次增加4if(count >= 200) {       //当图标到达标签的最右边时,使其回到标签最左边count=10;}}}});t.start();           //启动线程container.add(jl);    //将标签添加到容器中setVisible(true);    //设置窗体可见setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); //设置窗体关闭方式}public static void main(String[] args) {new SwingAndThread();        //实例化一个 SwingAndThread 对象
//      System.out.println(SwingAndThread.class.getResource(""));}}

运行结果(有水印望各位请体谅理解):

注意:这里我要讲解下面这行代码

URL url = SwingAndThread.class.getResource("1.png");

当时我有卡在这里,因为不知道图片放在哪里,getResource() 方法才能获取到。后面百度了下,才找到了解决的方法:
可以看到,我在 main() 方法里注释了一行代码:

System.out.println(SwingAndThread.class.getResource(""));

这行代码,是用来获取当前当前项目的运行路径的。结果为:

所以能够得出,图片肯定放在bin目录下才能获取到。

总结:

  • run() 方法用来存放 线程执行逻辑
  • 只有调用 start() 方法才会产生线程实体,并且运行。

4、getResource方法

参考:原文链接

5、删除字符串最后一个字符的几种方法

参考:
java删除字符串最后一个字符的几种方法

6、字符串分割[split()]和截取[substring()]

字符串分割[split()]和截取[substring()]

7、判断一个字符串是否包含某个字符

判断一个字符串是否包含某个字符

8、String方法的总结

String方法的总结

9、List集合实现倒倒序排列

Collections.reverse(dataList);

10、JDK指定D盘安装及环境变量配置

一丶下载JDK,并将它放到我们D盘的任意一个目录下(不要放在含有中文的文件目录)

我的网盘
链接:https://pan.baidu.com/s/1qDWpLmYYknlaYrjismk0rA&shfl=sharepset
提取码:r8mq

二丶配置环境变量

%JAVA_HOME%\bin;%JAVE_HOME%\jre\bin;

D:\program\JAVA\jdk\jdk1.8.0_171

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib;\tools.jar

%JAVA_HOME%\bin;%JAVE_HOME%\jre\bin;

三丶检测是否成功
打开命令:Ctrl+R
1.输入java,显示如下内容,表示成功

2.java -version

到此,就已经完全成功了!

11、bug记录

今天来跟大家谈一下一个,我在做一个新闻项目的时候,遇到的一个很有意思的小Bug

报错的信息如下:

原因分析:

解决方法:

12、BufferReader中的readLine()方法

BufferReader:字符读取流缓冲去,在BufferReader中有一个readLine()方法,表示每次读取一行数据。

readLine()方法返回包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null,即返回的数据为回车符自己的数据,不包括回车符。

readLine()方法的原理:

readLine()方法无论读取一行数据还是读取多个字符,最终调用的方法还是读取字符流(Reader)中的read()方法,一次读取一个字符。


import java.io.FileReader;
import java.io.IOException;/** 模拟实现BufferedReader中的readLine()方法* */
public class MyBufferedReader {private FileReader fr = null;public MyBufferedReader(FileReader fr) {this.fr = fr;}public String readLine() throws IOException {// 定义一个临时容器,用于存放读取的数据StringBuilder sb = new StringBuilder();// 定义一个字符,用于判断是否读取到文件末尾int ch = 0;while ((ch = fr.read()) != -1) {if (ch == '\r') {continue;}if (ch == '\n') {return sb.toString();}else{sb.append((char)ch);}}//判断缓冲区是否还有数据,要是有数据就输出,(这种情况是避免最后一行数据没有回车符造成数据没有读出的问题)if(sb.length() !=0){return sb.toString();}return null;}//定义关闭方法public void close() throws IOException{if(fr != null){fr.close();}}
}

原文链接:https://blog.csdn.net/peituanjie/article/details/17421773

13、java.lang.NullPointerException - 如何处理空指针异常

原文:java.lang.NullPointerException - 如何处理空指针异常

14、报错:Parameter index out of range (1 > number of parameters, which is 0).

这种情况,肯定是某一个步的执行语句下表越界了,注意检查代码!
可能是解析结果集的时候,也有可能是存储值的时候

15、字符串怎么转换成整数

String s=“123”;
int i;
方法一
第一种方法:i=Integer.parseInt(s);

方法二

第二种方法:i=Integer.valueOf(s).intValue();

16、 API中文版

API中文版

17、InputStream.read(),response.getOutputStream(),OutputStream().write【IO流】

一丶 FileInputStream类:

Class FileInputStream
java.lang.Object
java.io.InputStream
java.io.FileInputStream
All Implemented Interfaces:
Closeable , AutoCloseable

public class FileInputStream
extends InputStream
A FileInputStream从文件系统中的文件获取输入字节。 什么文件可用取决于主机环境。
FileInputStream用于读取诸如图像数据的原始字节流。 要阅读字符串,请考虑使用FileReader 。

从以下版本开始:
JDK1.0
另请参见:
File , FileDescriptor , FileOutputStream , Files.newInputStream(java.nio.file.Path, java.nio.file.OpenOption…)

二丶 public FileInputStream(String name)

简介:

FileInputStream(String name)
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

详情:

构造方法详细信息
FileInputStream
public FileInputStream(String name)
throws FileNotFoundException
通过打开与实际文件的连接创建一个FileInputStream文件,该文件由文件系统中的路径名name命名。 创建一个新的FileDescriptor对象来表示此文件连接。
首先,如果有一个安全管理器,它的checkRead方法被调用与name参数作为其参数。

如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException 。

参数
name - 与系统相关的文件名。
异常
FileNotFoundException - 如果文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开阅读。
SecurityException - 如果安全管理器存在,并且其 checkRead方法拒绝对该文件的读取访问。
另请参见:
SecurityManager.checkRead(java.lang.String)

三丶 InputStream 类

org.omg.CORBA_2_3.portable
Class InputStream
java.lang.Object
java.io.InputStream
org.omg.CORBA.portable.InputStream
org.omg.CORBA_2_3.portable.InputStream
All Implemented Interfaces:
Closeable , AutoCloseable

public abstract class InputStream
extends InputStream
InputStream提供从流中读取所有映射的IDL类型。 它扩展了org.omg.CORBA.portable.InputStream。 该类定义了为CORBA 2.3添加的新方法。
从以下版本开始:
JDK1.2
另请参见:
InputStream

四丶 InputStream.read(数组)

得到数组的长度

byte[]  b = new byte[1024];
length= inputStream.read(b)

有值就会返回数组长度,没值就会返回-1

五丶 OutputStream 类

compact1, compact2, compact3
java.io
Class OutputStream
java.lang.Object
java.io.OutputStream
All Implemented Interfaces:
Closeable , Flushable , AutoCloseable
已知直接子类:
ByteArrayOutputStream , FileOutputStream , FilterOutputStream , ObjectOutputStream , OutputStream , PipedOutputStream

public abstract class OutputStream
extends Object
implements Closeable, Flushable
这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。
需要定义OutputStream子类的应用OutputStream必须至少提供一个写入一个字节输出的方法。

从以下版本开始:
JDK1.0
另请参见:
BufferedOutputStream , ByteArrayOutputStream , DataOutputStream , FilterOutputStream , InputStream , write(int)
六丶 OutputStream.write()

简介

void write(byte[] b, int off, int len)
从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。

详情

public void write(byte[] b,
int off,
int len)
throws IOException
从指定的字节数组写入len字节,从偏移off开始输出到此输出流。 write(b, off, len)的一般合同是数组b中的一些字节按顺序写入输出流; 元素b[off]是写入的第一个字节, b[off+len-1]是此操作写入的最后一个字节。
该write的方法OutputStream调用写出在每个字节中的一个参数的写入方法。 鼓励子类覆盖此方法并提供更有效的实现。

如果b是null ,则抛出NullPointerException 。

如果off为负数,或len为负数,或off+len大于数组b的长度,则抛出IndexOutOfBoundsException 。

参数
b - 数据。
off - 数据中的起始偏移量。
len - 要写入的字节数。
异常
IOException - 如果发生I / O错误。 特别地,如果输出流关闭,则抛出IOException 。

七丶 OutputStream.close()

简介

close()
关闭此输出流并释放与此流相关联的任何系统资源。

详情

public void close()
throws IOException
关闭此输出流并释放与此流相关联的任何系统资源。 close的一般合同是关闭输出流。 封闭流不能执行输出操作,无法重新打开。
该close的方法OutputStream什么都不做。

Specified by:
close在界面 Closeable
Specified by:
close在界面 AutoCloseable
异常
IOException - 如果发生I / O错误。

八丶 InputStream.close()
同上

九丶 代码解析

//要下载哪一个文件,获取文件名String  fileName = request.getParameter("fileName");fileName = new String(fileName.getBytes("iso-8859-1"), "utf-8");System.out.println("fileName:"+fileName);//找到要下载的这个文件路径 如果项目部署在安装的Tomcat下//F:\\online\\servlet\\teach\\day01\\soft\\apache-tomcat-7.0.52\\webapps\\Servlet06\\uploadString   path = getServletContext().getRealPath("/upload");System.out.println("path:"+path);System.out.println("File.separator:"+File.separator);//文件名需要根据不同的浏览器进行转码,否则如果下载的文件,文件名是中文的话,就好出问题//attachment:通知浏览器以下载的形势打开这个页面response.setHeader("Content-Disposition", "attachment;fileName="+getStr(request,fileName));//输入流 InputStream  inputStream = new FileInputStream(path+File.separator+fileName);//响应输出流OutputStream  outputStream = response.getOutputStream();int length = 0;//桶byte[]  b = new byte[1024];while ((length= inputStream.read(b)) != -1) {outputStream.write(b, 0, length);}outputStream.close();inputStream.close();}

18、Map.keySet()、Map.put()、Map.get()【Map类、Set类】

首先,不要慌,大家来看一下API的介绍,最后会用一个代码例子进行解析:

一丶 Map<K,V>

Interface Map<K,V>
参数类型
K - 由此地图维护的键的类型
V - 映射值的类型
All Known Subinterfaces:
Bindings , ConcurrentMap <K,V>, ConcurrentNavigableMap <K,V>, LogicalMessageContext , MessageContext , NavigableMap <K,V>, SOAPMessageContext , SortedMap <K,V>
所有已知实现类:

AbstractMap , Attributes , AuthProvider , ConcurrentHashMap , ConcurrentSkipListMap , EnumMap , HashMap , Hashtable , IdentityHashMap , LinkedHashMap , PrinterStateReasons , Properties , Provider , RenderingHints , SimpleBindings , TabularDataSupport , TreeMap , UIDefaults , WeakHashMap



public interface Map<K,V>
将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值。
这个接口取代了Dictionary类,它是一个完全抽象的类而不是接口。

Map界面提供了三个集合视图 ,允许将映射内容视为一组键,值集合或键值映射集合。 地图的顺序被定义为其中在地图上的集合视图迭代返回元素的顺序。 一些地图实现,如TreeMap课程,对他们的订单做出了具体的保证; 其他人,像HashMap班,不要。

注意:如果使用可变对象作为地图键,必须非常小心。 如果对象的值以影响equals比较的方式更改,而对象是地图中的键,则不会指定地图的行为。 这个禁令的一个特殊情况是,地图不允许将自己包含在内。 虽然地图可以将其本身作为一个值,但建议您非常小心: equals和hashCode方法在这样的地图上已经不太明确。

所有通用映射实现类应提供两个“标准”构造函数:一个创建空映射的void(无参数)构造函数,以及一个具有类型为Map的单个参数的构造函数 ,它创建一个具有相同键值的新映射映射作为参数。 实际上,后一个构造函数允许用户复制任何地图,产生所需类的等效地图。 没有办法强制执行此建议(因为接口不能包含构造函数),而JDK中的所有通用映射实现都符合要求。

包含在该界面中的“破坏性”的方法,即,修改其操作地图的方法,被指定抛出UnsupportedOperationException如果此映射不支持该操作。 如果是这种情况,如果调用对地图没有影响,这些方法可能会但不是必须抛出UnsupportedOperationException 。 例如,如果映射映射为“叠加”的地图为空,则可以在不可修改的映射上调用putAll(Map)方法,但不是必须抛出异常。

一些地图实现对它们可能包含的键和值有限制。 例如,一些实现禁止空键和值,有些对键的类型有限制。 尝试插入不合格的键或值会抛出未经检查的异常,通常为NullPointerException或ClassCastException 。 尝试查询不合格键或值的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,尝试对不符合条件的密钥或值的操作,其完成不会导致将不合格元素插入到地图中可能会导致异常或可能成功执行该选项。 此异常在此接口的规范中标记为“可选”。

Collections Framework接口中的许多方法都是按照equals方法定义的。 例如,对于在本说明书containsKey(Object key)方法表示:“返回true当且仅当此映射包含一个键k使得(keynull ? knull : key.equals(k))的映射。” 该规范不应该被解释为意味着具有非空参数调用key Map.containsKey会导致key.equals(k)被调用的任意键k。 实现可以实现优化,从而避免equals的调用,例如,首先比较两个密钥的哈希码。 ( Object.hashCode()规范保证具有不等的哈希码的两个对象不能相等。)更一般地,各种Collections Framework接口的实现可以随意使用底层Object方法的指定行为,无论执行者认为适当。

执行递归遍历地图的一些地图操作可能会失败,并且地图直接或间接包含自身的自引用实例有异常。 这包括clone() , equals() , hashCode()和toString()方法。 实现可以可选地处理自引用场景,然而大多数当前实现不这样做。

此接口是成员Java Collections Framework 。

从以下版本开始:
1.2
另请参见:
Collection , List , SortedSet , HashSet , TreeSet , AbstractSet , Collections.singleton(java.lang.Object) , Collections.EMPTY_SET

二丶 Map.keySet()
简介:

Set keySet()
返回此地图中包含的键的Set视图。

详情:

keySet
Set keySet()
返回此地图中包含的键的Set视图。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.remove,Set.remove,removeAll,retainAll和clear操作。 它不支持add或addAll操作。
结果
该地图中包含的键的集合视图

三丶 Map.get()

简介:

V get(Object key)
返回到指定键所映射的值,或 null如果此映射包含该键的映射。

详情:

V get(Object key)
返回到指定键所映射的值,或null如果此映射包含该键的映射。
更正式地,如果该映射包含从键k到值v ,使得(keynull ? knull : key.equals(k)) ,则该方法返回v ; 否则返回null 。 (最多可以有一个这样的映射。)

如果此映射允许空值,则返回值null并不一定表明该映射不包含该键的映射关系; 地图也可能明确地将密钥映射到null 。 可以使用containsKey操作来区分这两种情况。

参数
key - 要返回其关联值的键
结果
指定键映射到的值,如果此映射不包含键的映射, null
异常
ClassCastException - 如果密钥是该地图不合适的类型( optional )
NullPointerException - 如果指定的键为空,并且此映射不允许空键( optional )

四丶 Map.put()

简介:

V put(K key, V value)
将指定的值与该映射中的指定键相关联(可选操作)。

详情:

V put(K key,
V value)
将指定的值与该映射中的指定键相关联(可选操作)。 如果映射先前包含了密钥的映射,则旧值将被指定的值替换。 (映射m被认为包含关键字的映射k当且仅当m.containsKey(k)将返回true )。
参数
key - 指定值与之关联的键
value - 与指定键相关联的值
结果
前一个值与key相关联 ,或null,如果没有key的映射。 (A null返回也可以表示该地图以前关联的null与key ,如果实现支持null的值)
异常
UnsupportedOperationException -如果 put操作不受此地图支持
ClassCastException - 如果指定的键或值的类阻止它存储在此映射中
NullPointerException - 如果指定的键或值为空,并且此映射不允许空值或值
IllegalArgumentException - 如果指定键或值的某些属性阻止其存储在此映射中

五丶 Set 类

compact1, compact2, compact3
java.util
Interface Set
参数类型
E - 由此集合维护的元素的类型
All Superinterfaces:
Collection , Iterable
All Known Subinterfaces:
NavigableSet , SortedSet
所有已知实现类:
AbstractSet , ConcurrentHashMap.KeySetView , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , JobStateReasons , LinkedHashSet , TreeSet


public interface Set
extends Collection
不包含重复元素的集合。 更正式地,集合不包含一对元素e1和e2 ,使得e1.equals(e2) ,并且最多一个空元素。 正如其名称所暗示的那样,这个接口模拟了数学集抽象。
Set接口除了继承自Collection接口的所有构造函数的合同以及add,equals和hashCode方法的合同外 , 还 增加了其他规定。 其他继承方法的声明也包括在这里以方便。 (伴随这些声明的规范已经量身定做Set接口,但它们不包含任何附加的规定。)

构造函数的额外规定并不奇怪,所有构造函数都必须创建一个不包含重复元素的集合(如上所定义)。

注意:如果可变对象用作设置元素,则必须非常小心。 如果对象的值以影响equals比较的方式更改,而对象是集合中的元素, 则不指定集合的行为。 这种禁止的一个特殊情况是,一个集合不允许将其本身作为一个元素。

一些集合实现对它们可能包含的元素有限制。 例如,一些实现禁止空元素,有些实现对元素的类型有限制。 尝试添加不合格元素会引发未经检查的异常,通常为NullPointerException或ClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,尝试对不符合条件的元素的操作,其完成不会导致不合格元素插入到集合中,可能会导致异常,或者可能会成功执行该选项。 此异常在此接口的规范中标记为“可选”。

此接口是成员Java Collections Framework 。

从以下版本开始:
1.2
另请参见:
Collection , List , SortedSet , HashSet , TreeSet , AbstractSet , Collections.singleton(java.lang.Object) , Collections.EMPTY_SET

六丶 代码讲解:

     Map<String, String[]>  map = request.getParameterMap();//获取所有的name属性值//map.keySet()获取map全部的key值Set<String>   keys=map.keySet();for (String key : keys) {//通过name属性值,获取用户输入的值String[]  values = map.get(key);System.out.println(key+":"+Arrays.toString(values));}}

结果:

那么到此,我们的介绍就结束了!相信聪明的你们一定有所理解了,如果不明白代码的意思就翻到上面去看我的API介绍,好了那么这一章就介绍到这里,感谢大家的收看,我叫王睿,谢谢你们能够看我的博客,感谢!

19、Arrays.toString(string[]) + Enumeration.hasMoreElements()【Arrays类、Enumeration接口】

首先,不要慌,大家来看一下API的介绍,最后会用一个代码例子进行解析:

一丶 Enumeration 接口
Interface Enumeration
All Known Subinterfaces:
NamingEnumeration
所有已知实现类:
StringTokenizer

public interface Enumeration
实现枚举接口的对象生成一系列元素,一次一个。 连续调用nextElement方法返回系列的连续元素。
例如,打印所有元素的一个Vector v :

for (Enumeration e = v.elements(); e.hasMoreElements()

Java 常见问题总结相关推荐

  1. Java常见问题之Data too long for column 'orResponse' at row 1

    本文介绍了出现Data too long for column 'trRequest' at row 1问题的解决方式 一.bug提示如下 Error Code: 1406. Data too lon ...

  2. java常见问题排查

    问题1:NoSuchMethodException 分析:jar包版本冲突,java在装载一个目录下的jar包的时候,他的加载顺序取决于操作系统不取决于java本身,而Linux操作系统取决于inod ...

  3. Java常见问题汇总

    来源: StackOverflow, 自己使用中总结 集合 并发 网络 获取本机IP InetAddress inetAddress = InetAddress.getLocalHost(); Str ...

  4. r.java没有生成_R.java 常见问题(R.java文件没有生成 )

    1.选择菜单  Project >> Clean ,前提是勾选上 Bulid Automatically(自动构建部署) , 点Clean后会重新构建项目,因为一般情况下,R.java文件 ...

  5. Rational Rose 逆向工程(java) 常见问题二则

    1. rose逆向工程的时候,属性类型表现为:Logical View::java::lang::    解决办法:      菜单->Tools->Java/j2ee->Proje ...

  6. java常见问题处理

    文章目录 一.前言 二.实战演练 1.idea常用快捷键使用 2.idea设置字体大小 3.idea设置背景颜色-背景 4.idea配置Maven 5.idea中配置JDK 6.idea中java.u ...

  7. 转自52 梦回凉亭的她 Java常见问题,面试题

    收集整理分享 # 相关概念 ## 面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. ## 多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而 ...

  8. Java常见问题(1)navicat连接mysql报2059错误

    一.navicat连接mysql8后出现2059报错原因 使用navicat连接mysql数据库的时候,弹出2059错误,如下图所示,出现的原因是mysql8安装选择了强加密规则caching_sha ...

  9. Java常见问题之HashMap扩容、树化、死链

    写在前边 HashMap属于比较常用的数据结构了,面试过程中也经常会被问到,本篇就知识点,展开问答式分析,重点聊聊hash冲突.扩容死链.容量为2的n次方.1.7和1.8之间的区别等问题~ 如何解决H ...

  10. Java常见问题3:周期之谜

    谜24 byte是有符号的.范围是-128 - 127. 而0x90是int类型. 比較的时候.不相等. 假设想让其相等,须要进行类型转换:(byte & 0xff) 或者 (byte)0x9 ...

最新文章

  1. 测量AMS1117的输入输出特性
  2. Hadoop2.7.3分布式集群安装
  3. c语言变量名必须用小写 常量用大写,day02 -C语言 常量 变量 数据类型 进制转换 数据溢出...
  4. 使用doctest单元测试方式培训讲解:Python函数基础
  5. JS map和set
  6. ros 双wan配置_基于ROS搭建简易软件框架实现ROV水下目标跟踪(九)--程序解析之PWM波下发...
  7. nginx配置:支持phpfastcgi,nginx和php-cgi通信,部分nginx常量解释
  8. sql server 加密_SQL Server始终被加密,以适合您的环境进行敏感数据加密
  9. 基于tkinter的简易加减乘除计算器
  10. 对数组名取地址a和 数组首地址a
  11. Angular实现购物车计算
  12. MacBook苹果电脑翻盖自动开机及音效设置
  13. 操作性条件作用和经典性条件作用中,刺激分化和泛化的区别是?|小白心理-312/347考研答疑
  14. Ardunio开发实例-LM75温度传感器
  15. SEIR传染病模型Netlogo仿真程序
  16. Vue零基础到实战权威开发宝典_学习笔记
  17. ORACLE 技术学习笔记
  18. android 抽屉,凌乱了 Android的抽屉到底要不要?
  19. go语言:环境变量GOPROXY和GO111MODULE设置
  20. K-近邻算法(KNN) 预测电影类型

热门文章

  1. MacOS平台上编译 hadoop 3.1.2 源码
  2. 20171103_Python学习三周五次课
  3. Xcode 8.1 : Unable to read from device
  4. Sql Server函数全解一字符串函数
  5. SeaJS项目完整实例【转】
  6. 黑马程序员_Java高新技术
  7. RNN系列之四 长期依赖问题
  8. 华为诺亚方舟 | 构建1亿组图文对中文多模态数据集
  9. 关于Scikit-Learn你(也许)不知道的10件事
  10. BERT模型—3.BERT模型在ner任务上的微调