![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
胖虎aaa
这个作者很懒,什么都没留下…
展开
-
常见的数组排序方法
冒泡排序private static int[] bubbleSort() { int[] array = {1,3,4,1,3,5,7,9,2}; // 测试数组 if (array == null){ return null; } for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length原创 2020-08-27 17:09:01 · 1081 阅读 · 0 评论 -
Java中异常的理解
Java中异常分类按照异常需要处理的时机分为:· 编译时异常(强制性异常),即CheckedException· 运行时异常(非强制性异常),即RuntimeException只有 java 语言提供了 Checked 异常,Java 认为 Checked异常都是可以被处理的异常,所以 Java 程序必须显式处理 Checked 异常。如果程序没有处理 Checked 异常,该程序在编译时就会发生错误无法编译。这体现了 Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行。对 Chec原创 2020-08-24 10:42:58 · 162 阅读 · 0 评论 -
Java中字符串“Java程序员”在内存中所占用的字节数
Java语言中,字符串“Java程序员”在内存中所占用的字节数是:(D)A.10B.7C.13D.14分析说白了归根到底就是编码问题,java实际是采用的unicode编码,准确的说是采用utf-16编码的(utf-16可以说是unicode编码的一种实现形式),这在java的说明手册中是可以清晰看到的。UTF-16任何字符对应的数字都用两个字节来保存,所以说在这道题中没有指定编码格式,那么采用默认的编码格式(即utf-16),每个字符都占用2个字节。UTF-8utf-8采用变长字节的形原创 2020-08-24 08:38:14 · 2306 阅读 · 0 评论 -
StringBuffer/StringBuilder
StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问),它和 StringBuffer的方法完全相同,区别在于它是在单线程环境下使用,因为它的所有方法都没有被synchronized修饰,因此它的效率理论上也比StringBuffer要高。 由于 StringBuilder 相较于 St原创 2020-07-08 12:09:35 · 77 阅读 · 0 评论 -
Math.round(11.5)等于多少?Math.round(- 11.5) 又等于多少?
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5然后进行取整。原创 2020-07-08 11:36:01 · 931 阅读 · 0 评论 -
throw和throws的区别
throw:1)throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。2)throw是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行throw一定是抛出了某种异常。throws:1)throws语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。2)throws主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。3)throws表示出现异常的一种可能性,并不一定会发生这种异常。...原创 2020-07-08 11:31:51 · 103 阅读 · 0 评论 -
new和clone
为什么要用 clone?在实际编程过程中,我们常常要遇到这种情况:有一个对象 A,在某一时刻 A 中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B 任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段。new 一个对象的过程和 clone 一个对象的过程区别· new操作符的本意是分配内存原创 2020-07-04 12:40:38 · 321 阅读 · 0 评论 -
线程池
1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应用程序的一个简单模型是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上对于原型开发这种方法工作得原创 2020-07-28 11:27:21 · 67 阅读 · 0 评论 -
对于栈内存和堆内存的理解
栈1.和堆一样存储在计算机RAM中2.栈是为执行线程留出的内存空间3.栈附属于线程,因此当线程结束时栈被回收4.线程被创建的时候,设置栈的大小5.当用栈过多时会导致栈溢出(无穷次/大量的递归调用,或者大量的内存分配)6.如果在编译之前精确的知道要分配数据的大小并且不是太大的时候,可以使用栈栈底层1.栈经常与sp寄存器一起工作,最初sp指向栈顶2.CPU用push指令将数据压栈,用pop指令来弹栈。压栈时sp值减少,弹栈时sp值增大,存取和获取数据都是CPU寄存器的值3.当函数被调用时,C原创 2020-07-27 21:24:28 · 1167 阅读 · 0 评论