当前位置 > 主页 > 万和大讲堂 >


Java开发总结_南京万和Java培训分享

2016-10-20 10:54

  Hello,今天南京万和Java培训继续给大家分享一些学习Java的心得,希望能帮助到大家。


  一、String


  1、String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同;


  2、字符串常量,多次出现,只创建一个对象;


  3、通过 String s1="lover"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,然后通过 s1="xiong"+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象;


  4、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder;


  5、每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法;


  6、字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1;


  7、使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1;


  8、使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符;


  9、字符串有length()方法,数组有length属性,泛型集合有size 方法;


  10、StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。


  二、包装类


  1、将本类型和其他基本类型进行转换的方法;


  2、将字符串和本类型及包装类互相转换的方法;


  3、装箱,基本类型转包装类、拆箱,包装类转基本类型。


  三、基本类型和字符串之间的转换


  3.1、基本类型转字符串


  1. 使用包装类的 toString() 方法;


  2. 使用String类的 valueOf() 方法;


  3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串。


  3.2、字符串转基本类型


  1. 调用包装类的 parseXxx 静态方法;


  2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱。


  四、SimpleDateFormate


  1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理;


  2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包;


  3、format:日期转字符串;parse:字符串转日期;


  4、calendar推荐使用


  Calendar calendar = Calendar.getInstance();


  Date date = calendar.getTime();


  五、Math


  Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法


  六、集合


  6.1、集合的作用


  1、在类的内部,对数据进行组织;


  2、简单而快速的搜索大数量的条目;


  3、有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素;


  4、有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。更多内容,请咨询南京万和Java培训


  6.2、集合vs数组


  1、数组的长度固定,集合长度可变;


  2、数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找到所映射的具体对象。


  6.3、集合关系图


  6.4、Collection接口


  1、是list、set和queue接口的父接口;


  2、定义了可用于操作list、set和queue的方法--增删改查。


  6.4.1、List接口及其实现类--ArrayList


  1、List是元素有序并且可以重复的集合,被称为序列;


  2、List可以精确的控制每个元素的插入位置,或删除某个位置元素;


  3、ArrayList--数组序列,是List的一个重要实现类;


  4、ArrayList底层是由数组实现的;


  5、对象放入集合中,默认存为object类型;


  6、泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,没有声明集合类型则可以任意添加;


  7、泛型集合的限定类型不能是基本类型的,必须是引用类型的;


  8、contains比较equals。


  6.4.2、set接口及其实现类--HashSet


  1、set是元素无序并且不可以重复的集合,被称为集;


  2、HashSet--哈希集,是set的一个重要实现类;


  3、set中,添加某个对象,无论添加多少次,最终只会保留一个该对象的引用,并且,保留的是第一次添加的哪一个;


  4、set没有set,get方法,所以遍历时可以通过iterator或者foreach遍历;


  5、contains比较hashcode和equals。


  6.4.3、Map和HashMap


  1、Map提供了一种映射关系,其中的元素是以键值对的形式存储的,能够实现根据key快速查找value;


  2、Map中的键值对以Entry类型的对象实例形式存在;


  3、键(key值)不可重复,value值可以;


  4、每个键最多只能映射到一个值;


  5、Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法;


  6、Map支持泛型,形式如:Map<K,V>;


  7、HashMap是Map中的一个重要实现类,也是最常用的,基于哈希表实现;


  8、HashMap中的Entry对象是无序排列的;


  9、Key值和Value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复);


  10、contains比较equals。


  6.4.4、comparable与Comparator


  1、Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序;


  2、Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer 自己就可以完成比较大小操作,已经实现了Comparable接口);


  3、Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较;


  4、Comparable 是对对象来进行排序的 Comparator 是对容器上的元素进行排序的。


  七、XML(数据存储及传输)


  7.1、Dom解析读取xml内容(基础)


  1、创建一个documentBuilderFactory对象;


  2、创建一个DocumentBuilder对象;


  3、通过DocumentBuilder对象的parse方法解析文件,返回值为document对象;


  4、document获取节点信息,byTagName方法获取节点;


  5、遍历集合,通过item(index) 方法获取xml节点,index从0开始;


  6、通过节点的getAttributes方法获取节点的所有属性;


  7、子节点数要算上空格换行(text类型节点)加上标签(element类型节点);


  8、获取element类型节点的节点值需要先getFirstChild().getNodeValue()或getTextContent();


  9、平台无关的官方解析方式,一次性将xml文件加载进内存;


  10、优点:形成树结构,直观易理解,代码易编写;解析过程中树结构保存在内存中,方便修改;


  11、缺点:xml文件大时,对内存耗费比较大,容易影响解析性能并造成内存溢出。更多内容,请咨询南京万和Java培训


  7.2、Sax解析xml内容(基础)


  1、乱码问题:


  a:修改xml的encoding编码为gbk或utf-8;


  b:读取文件时进行编码设置,inputStreamReader(“file”,utf-8);


  2、需要自己定义一个handler类,并重写事件方法;


  3、基于事件驱动的解析方式,即逐条解析xml文件;


  4、优点:采用事件驱动方式,对内存耗费较小;适用于只需要处理数据时;


  5、缺点:不易编码,很难同时处理同一个xml中的多处不同数据。


  7.3、JDom解析xml内容


  1、仅使用了具体类而不使用接口;


  2、API大量使用了Collections集合类。


  7.4、Dom4j解析xml内容


  1、JDom的一个智能分支,它合并了许多超出基本xml文档表示的功能;


  2、Dom4J使用了接口和抽象基本类方法;


  3、性能优异,功能强大,灵活性好和极端易使用;


  4、开放源代码。


  7.5、四种生成xml方式对比


  1、Dom基于树结构;


  2、Sax基于事件;


  3、Jdom/Dom4j 基于底层api;


  4、不频繁修改节点,选用sax生成xml。


  八、Socket通信


  1、ip地址和端口号组成了socket,是tcp和udp的基础;


  2、http:80  ftp:21  telnet:23(如果未指定端口号,则getPort方法返回-1);


  3、多线程的优先级,创建线程时可以适当降低线程的优先级,可以提高运行速度;


  4、关闭资源时直接关闭socket就行了,不用关闭输入输出流;


  5、网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。


  九、线程


  9.1、程序、进程与多任务


  1、程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚本;


  2、进程(process)是程序的一次执行过程,是系统运行程序的基本单位,程序是静态的,进程是动态的,系统运行一个程序即是一个进程从创建、运行到消亡的过程;


  3、多任务(multitask)在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每个任务对应一个进程。


  9.2、线程


  1、比进程更小的运行单位,是程序中单个顺序的流控制,一个进程中可以包含多个线程;


  2、简单来讲,线程是一个独立的执行流,是进程内部的一个独立执行单元,相当于一个子程序;


  3、一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源;


  4、操作系统给每个线程分配不同的CPU时间片,在某一时刻,CPU只执行一个时间片内的线程,多个时间片中的相应线程在CPU内轮流执行。


  9.3、何时需要多线程


  1、程序需要同时执行两个或多个任务;


  2、程序需要执行一些需要等待的任务时,如用户输入,文件读写操作,网络操作,搜索等;


  3、需要一些后台运行的程序时。


  想学习更多的使用Java技能?想了解更多编程的技巧?希望学习更专业的Java技术知识?来南京万和Java培训吧!  

最近开班 more>
  • 全栈开发
  • 前端基础班
  • 软件测试
  • Java大数据开发工程师
  • 云原生精英班
  • 开发课程基础班第四期
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第一期
  • Java Web UI Python
  • CISP
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCM 12C
  • OCP 19C
  • RHCE 9.0
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • 脱产班
  • vip班
  • 考试计划
  • 脱产班
  • 脱产班
  • 脱产班
  • 双休班
  • 双休班
  • 双休班
  • 双休班
  • 业余班
  • 业余班
  • 10月16日
  • 9月23日
  • 9月2日
  • 9月30日
  • 8月26日
  • 10月8日
  • 9月23日
  • 9月16日
  • 9月9日
  • 随时开课
  • 9月21日
  • 10月17日
  • 9月18日
  • 9月2日
  • 11月2日
  • 10月26日
  • 9月7日
  • ——
  • 随时开课
  • 9月26日
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入