`

java基础杂集(更新中···)

阅读更多

1、类的初始化顺序

(父类--静态变量 或 父类--静态初始化块 )->(子类--静态变量 或 子类--静态初始化块)->(父类--变量 或 父类--初始化块)->

父类--构造器 ->(子类--变量 或 子类--初始化块) ->子类--构造器

 

静态变量和静态初始化块是依照他们在类中的定义顺序进行初始化的。同样,变量和初始化块也遵循这个规律。

 当然,可能和jvm 的底层实现也有点关系,不同jvm 可能有不同的结果。

 

 

具体原文:http://www.iteye.com/topic/208187

 

2、java编码

Java的class文件采用utf8的编码方式,JVM运行时采用utf16。 Java的字符串是unicode编码的。 总之,Java采用了unicode字符集,使之易于国际化。

具体原文:http://www.iteye.com/topic/311583

 

3、switch 的执行顺序和应用

 

class Test{
public static void main(String[] args){
 int i=5;
switch (i) {
     default:
           System.out.print(5);
       case 1:
           System.out.print(1);	
       case 2:
           System.out.print(2);break;
       case 3:
           System.out.print(3);
       case 4:
           System.out.print(4);
  
       }

}
}

 

如以上代码:当i=5,输出512;当i=3,输出34

按这照这个规律可猜想switch 的执行顺序是:首先在查询case中有没匹配的(不执行case下的输出代码),找到时一直执行直到遇到break后停止(以下case中的代码都会执行),如果没有找到,则查找default,运行起里面的代码,也是一直遇到break后停止(如果后面还有case,也会执行其代码)。

关于default 的一些技巧可查看以下:http://www.iteye.com/topic/341970

 

4、final 和变量的初始化

final 有“无法改变的”、“终态的”的含义,强调是常量

static 有“全局”、“静态”的含义,强调多个实例共用一份

 

对于final类型成员变量的初始化方法有两种:
  (1)声明变量时直接赋值;
  (2)在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法都要完成对该final类型的成员变量赋值。
对于final+static声明的成员变量,必须在声明时赋值,不能在构造方法中赋值。
因为static类型的变量是在加载类的时候创建的,也就是说是在创建对象之前即执行构造方法之前执行的。

final 类(保证该类不被继承)中的所有方法(非成员变量) 都隐式指定是final

相关链接:http://www.iteye.com/topic/350201
final类型对于原生类型如int等来说,一旦声明了就不能改变了。
final类型对于引用类型来说,所谓的不能改变是指引用不能改变,即一旦指向某个对象了,就不能在指向其他对象了,但是引用的对象的内容是可以改变的。

相关链接:http://www.iteye.com/topic/350205

详细总结:http://lavasoft.blog.51cto.com/62575/18771

 

java类的成员变量是基本类型的话,如果没有初始化,java 也会确保它获得一个默认值,而如果该成员变量为fianl 修饰的话,那必须在类初始化时显示的初始化,比如:如果i 在类中没有任何显示的初始化操作,private int i  是正确的,而private fianl int i 会报没有初始化的错。(方法变量必须显示初始化

 

5、finally 和return  执行的顺序

          finally里的code永远会执行,且在return之前执行 ,除非你使用了System.exit()或者执行到finally的时候因为断电什么的原因jvm停止了。  

 

6、进程的五种状态之间的转换

 


7、java io

InputStream 和OutputStream 是面向字节(byte)形式的IO ,Reader 和Writer 是提供兼容 Unicode 与面向字符(char、String)的IO 功能。相关的 BufferedInputStream(BufferedOutputStream) 或者 BufferedReader(BufferedReaderWriter) 是相应的字节和字符的 带缓冲的操作。

一般的程序实现了,用字符操作包装字节操作,然后再用缓冲包装。

例如:new BufferedReader(new InputStreamReader(inputStream));  //inputStream 为InputSteam 字节

具体相关的IO 处理类的汇总,请参考:http://www.java2000.net/p1225

 

8、String 作为方法的参数传递问题

    String 的底层对String的存储实际上通过char[]来实现的(传递String 参数和实际是是传递char[] ,而char 为基本类型,所以是不会改变的)。传递String 方法和传递基本数据类型一样不会改变原始的值,而除了String 以外的对象则会改变该对象的值。在 String 用作方法参数传递 相加的时候,是用StringBuffer 而不是用String 的原因。

 

9、String 的对象的生成

     原来本来是理解了,不过久了没看又忘了,还是记录下好了。

http://www.iteye.com/topic/177812

http://www.iteye.com/topic/122206

 

10、List 中是否包含该对象的方法 contains(Object o)

    在api 的定义是:如果列表包含指定的元素,则返回 true 。更确切地讲,当且仅当列表包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时才返回 true

    由此可知,如果要对对象进行该操作,则应该覆盖他的hashcode 和equal 方法,使之正常运行。

 

11、内存溢出和内存泄露的区别

     内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。 
     内存泄漏就是没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽)。

 

12 、Thread 的状态

   有时项目中的一些应用程序出现假死状态,收不到数据报也发不出去,用jstack 看了下线程的状态,发现有些线程是waiting/timed_waiting 状态,在最近看TCP的协议的时候看到过相关TCP中的TIME_WAIT状态(关于TCP的协议,可以参考 http://zhxing.iteye.com/blog/934851),他们之间有什么联系呢,发现有些搞不清楚,在查了API后,记录下这些 基础的知识,这些都可以在Thread.State的API上找到。

 

线程状态可以处于下列状态之一:
   NEW :至今尚未启动的线程处于这种状态。
   RUNNABLE :正在 Java 虚拟机中执行的线程处于这种状态。
   BLOCKED :受阻塞并且正在等待监视器锁的某一线程的线程状态。处于受阻塞状态的某一线程正在等待监视器锁,以便进入一个同步的块/方法,或者在调用 Object.wait 之后再次进入同步的块/方法。

   WAITING :处于等待状态的线程正等待另一个线程,以执行特定操作。 例如,已经在某一对象上调用了 Object.wait() 的线程正等待另一个线程,以便在该对象上调用 Object.notify()Object.notifyAll() 。已经调用了 Thread.join() 的线程正在等待指定线程终止。

   TIMED_WAITING : 具有指定等待时间的某一等待线程的线程状态。某一线程因为调用以下带有指定正等待时间的方法之一而处于定时等待状态: Thread.sleep;带有超时值的 Object.wait ;带有超时值的 Thread.join ;LockSupport.parkNanos ;LockSupport.parkUntil  。
   TERMINATED :已退出的线程处于这种状态。

 

在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态 ,它们并没有反映所有操作系统线程状态

 

 

  • 大小: 23.8 KB
分享到:
评论

相关推荐

    Java杂集

    【Java杂集】这个主题涵盖了Java编程语言中的各种实用技巧、工具使用以及源码解析,旨在帮助开发者深入理解和应用Java技术。在这个博文中,作者分享了一些关于Java集合框架的深入理解,以及在实际开发中可能会遇到的...

    JAVA学习(初学杂集)

    - **变量**:在Java中,变量是存储数据的容器。你需要声明变量类型和变量名,例如`int age = 25;` - **数据类型**:Java有基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类、接口和数组)。 ...

    OJ,数据结构,算法等的一个杂集.zip

    OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,算法等的一个杂集 OJ,数据结构,...

    .NET知识小杂集

    总结起来,《.NET知识小杂集》涵盖了.NET开发的多个重要方面,从动态网页控制到API调用,再到数据库操作和软件工程概念,这些都是.NET开发者需要掌握的基础知识。通过深入理解和实践这些技术,开发者可以更好地构建...

    VB杂集.chm

    VB杂集.chm <br>欢迎访问我的博客: http://workhelper.blogbus.com

    NET知识小杂集要的下载

    .NET框架是微软开发的一种软件框架,它为开发者提供...综上所述,.NET知识小杂集涵盖了.NET框架的各个方面,对于学习和掌握.NET开发至关重要。无论是初学者还是经验丰富的开发者,都可以从中受益,提升自己的技能水平。

    数控刀具杂集.docx

    数控刀具杂集 数控加工刀具技术的现状及发展趋势 近年来,在微电子技术、计算机技术、信息工程和材料工程等高新技术的推动下,传统的制造技术得到了飞速的发展,迅速发展成为一门新兴的制造技术——数字化制造技术...

    Linux使用中的一些问题杂集.pdf

    以上内容涵盖了Linux操作系统的一些基础概念、常见问题的解决方法和系统开发中的实用技巧,对于Linux用户来说是十分重要的学习资料。通过深入理解和实践,可以更好地掌握Linux系统并解决日常遇到的问题。

    Android_开发技巧经典杂集

    以下是一些从"Android_开发技巧经典杂集"文档中可能涵盖的重要知识点: 1. **优化布局(Layout Optimization)** - 使用`ConstraintLayout`进行布局管理,减少嵌套层次,提高性能。 - 使用`ViewStub`加载不常使用...

    汇编语言全接触和应用杂集

    汇编语言全接触和应用杂集 iczelion的win32汇编教程 iczelion的odbc教程 iczelion的vxd教程 罗云彬的win32汇编教程 win32经验点滴 加密解密 病毒分析

    Android_开发技巧杂集_网络_半透明_异步线程

    根据提供的文件信息,本文将详细解析其中涉及到的关键知识点:如何检查Android应用中的网络连接状态、实现全屏与无标题界面、使用ViewStub进行视图的延迟加载以及如何清除窗口背景。 ### 一、检查Android应用中的...

    各种关于花朵的知识杂集全收录

    在我们的日常生活中,花朵不仅是美丽的象征,还承载着丰富的生物学知识和文化意义。这份名为“各种关于花朵的知识杂集全收录”的文档,正如其标题所示,是一个全面收集了花朵相关知识的综合资料,旨在帮助对花卉有...

    AI_Sample_Zoo:收集了一些AI范例杂集

    Python作为数据科学和机器学习领域的首选语言,为AI_Sample_Zoo提供了坚实的编程基础。在这些样本中,你将看到如何利用Python的库,如NumPy、Pandas和SciPy进行数据处理,以及如何使用TensorFlow或Keras进行深度学习...

    Android开发技巧与性能优化

    3.JAVA 开发小技巧 4.ANDROID 最佳实践 4.1 为性能设计: 4.2 为响应灵敏性设计 4.3 为无缝设计: 5. 多资源文件的引用 6. ANDROID 调试 LOGCAT 技巧 7. 用 ANDROID 运行最简单的C 程序 8. 开发技巧杂集 8.1 一些...

    Android 资料

    每个版本的更新包括性能优化、用户界面改进、安全增强、API级别提升等。例如,Android 4.0引入了全新的设计语言Holo,Android 5.0引入了ART运行时以提高运行效率,Android 6.0增加了运行时权限管理,而Android 10则...

    博览群书的鲁迅.docx

    鲁迅从小就表现出独立思考的特质,对于所读的《花镜》一书,他不仅热爱阅读,还敢于批注书中他认为不妥的地方,显示了他不迷信权威,敢于质疑的精神。 进入私塾阶段,鲁迅在三味书屋接受寿镜吾老先生的教育,尽管...

    3ds max用的材质库

    3. **经典材质.mat**:可能包含一些基础且常用的材质,如塑料、玻璃、皮革等,是制作各种3D模型的基础。 4. **天空.mat**:专为模拟天空背景设计的材质,可能包括不同的云层、日出、黄昏等效果。 5. **水火杂集.mat*...

    一些代码文档

    在IT行业中,编程语言的接口(API)是开发者们日常工作中不可或缺的部分,特别是C API,它是许多系统级和库级编程的基础。C API通常是一组预定义的函数、数据类型和常量,允许程序员用C语言与其他软件组件交互。本...

    理查德·克莱得曼钢琴曲全集(8CD)喜欢的收藏一下

    10 杂集午后旅行:鸟之诗 星之小夜曲 孤独 11 蓝色狂想曲 12 思乡曲 13 柔如彩虹 14 吉姆诺波蒂 15 夜曲 16 水边的阿狄丽娜 CD7 圣诞协奏曲 01 飞天 02 万福玛利亚 03 红鼻子驯鹿 04 圣诞协奏...

Global site tag (gtag.js) - Google Analytics