`
nankaiJerry
  • 浏览: 122894 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Java学习札记

阅读更多

Java学习札记

 

1对于ArrayListVectorLinkedListList集合而言,当使用Iterator遍历他们时,如果正在遍历倒数第二个几何元素,使用List集合的remove()方法删除集合的任意一个元素并不会引发ConcurrentModificationException异常, 当正在遍历其他元素时,就会引发该异常。

对于TreeSetHashSetSet集合而言,当使用Iterator遍历他们时,如果正在遍历最后一个几何元素,使用Set集合的remove()方法删除集合的任意一个元素并不会引发ConcurrentModificationException异常, 当正在遍历其他元素时,就会引发该异常。

 

2当需要使用字符串,还有ByteShortIntegerFloatDoubleBooleanCharacter等包装类的实例时,程序不应该采用new的方式来创建对象,而应该直接采用直接量来创建它们。如使用String str=”Hello”;而不是String str=new String(“Hello”);

 

3对于String类而言,它代表字符串序列不可改变的字符串,因此,如果程序需要一个字符序列会发生改变的字符串,那应该考虑StringBuilderStringBuffer(通常更优先考虑前者)。

 

4String类型的变量,”==”比较两个字符串是否引用同一个实例对象,”equals”则比较两个字符串中对应每个字符是否相等。

 

5如果在编译Java程序时提出形如“非法字符:\xxxxx”的错误提示,那么可断该程序中包含全角字符,逐个删除即可。

 

6尽量保留循环体的花括号,否则容易出错。dowhilefor不允许循环体语句为单独的局部变量赋值操作(在无花括号情况下会出错)。

 

6进行异常捕获时,一定要记住先捕获小的异常,再捕获大的异常。

 

7 无论如何不要在finally块中递归调用可能引起异常的方法,因为这将导致该方法的异常不能正常被抛出,甚至StackOverFlow错误也不能终止程序。

 

8str.getBytes().length - str.length();获取字符串中汉字的数目(无其他特殊字符)

 

9)静态内部类可以有静态成员,而非静态内部类则不能有静态成员。静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量。非静态内部类的非静态成员可以访问外部类的非静态变量。

 

10)局部变量前不能放置任何访问修饰符 (privatepublic,和protected)final可以用来修饰局部变量 (final如同abstractstrictfp,都是非访问修饰符,strictfp只能修饰classmethod而非variable)

 

11)任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final

 

12)当一个变量被声明为泛型时,只能被实例变量和方法调用,不能被静态变量和方法调用。原因很简单,参数化的泛型是一些实例。静态成员是被类的实例和参数化的类所共享的。所以静态成员不应该有类型参数和它相关联。

 

13Java程序设计的基本原则

a.面向接口编程

b.优先使用对象组合而非类继承

c.分层 最典型的三层架构:表现层->逻辑层->数据层

表现层:展示数据、人机交互、收集参数调用逻辑层

逻辑层:进行数据与逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处理后续流程、组织数据返回给表现层

数据层:实现数据持久化、实现对象和持久化数据的双向映射

一定是表现层调用逻辑层,逻辑层调用数据层、不可以反过来。

层间交互也应该通过接口进行调用,以确保各层实现独立变化。

 

14)类设计的基本经验

a.类要单一

b.加强内聚,松散耦合

c.好的封装性

d.类的粒度要合理(类一般不超过5000行,方法不超过100行)

e.实现类不能依赖它的使用类

f.应考虑灵活性,也就是可配置(可以通过修改配置文件来选择系统实现的功能)、可维护(设计指标,系统可以很方便地修改已有的功能)

g.要考虑性能,考虑可伸缩性

h.要考虑今后可能的变化,也就是可扩展性

i.要考虑合理的复用

j.要合理地考虑接口和抽象类的使用 优先使用接口,既要约束子类的行为又要为子类提供公共的功能时优先使用抽象类

k.尽量减少类与协作类的交互次数和交互信息的量

l.父类不应该子类的信息,子类必须知道父类的信息

m.访问对象必须通过接口,不能绕过接口直接去实现

分享到:
评论

相关推荐

    0-学习札记快速整理软件-小组成员及分工1

    在"0-学习札记快速整理软件-小组成员及分工1"的项目中,我们可以看到一个典型的软件开发团队结构,该团队由多个成员组成,每个人都有明确的任务和职责。下面将详细讨论这个项目中涉及的IT知识点。 首先,源代码框架...

    JVM学习札记

    ### JVM学习札记 #### 一、JVM运行机制 ##### 1、JVM的启动流程 JVM的启动过程主要包括以下步骤: 1. **加载配置文件**:JVM启动时,首先会根据当前路径寻找配置文件`JVM.CFG`,这个文件包含了JVM的一些基础设置...

    学习PMD软件中的札记

    在"学习PMD软件中的札记"中,我们重点探讨了如何利用PMD来提升代码质量,并关注了`UseSingleton`规则。 `UseSingleton`是PMD中的一个规则,其目标是检测那些可以被设计为单例(Singleton)但当前并未如此实现的类。...

    JUnit使用札记

    JUnit是Java编程语言中最常用的单元测试框架之一,用于编写和...学习并熟练掌握JUnit对于任何Java开发者来说都是至关重要的,它可以帮助我们建立健壮的代码,提高软件质量,并且在团队协作中提供了一种可靠的验证方式。

    401java-reading-notes

    标题:“401java-reading-notes”是一个由代码研究员训练营(CODE-401)提供的Java学习资料,特别是针对Java编程语言的基础和深入理解进行的阅读笔记。这些笔记旨在帮助学员系统地掌握Java的知识体系,包括但不限于...

    jsp&servlet_notebook

    【JSP&Servlet学习札记】是一份详细记录了JavaServer Pages(JSP)和Servlet核心技术的学习笔记。这些技术是Web开发中的重要组成部分,尤其在企业级应用开发中广泛使用。下面将对JSP和Servlet的主要概念、核心功能...

    Clojure Handbook(2012.11.1)

    这份手册的写作风格非常接近技术札记,不同于正式的书籍或手册。作者强调了笔记的实用性和个人特色,它更适合那些已经具备一定编程背景、特别是有Java经验的开发者,想要快速入门Clojure的人。 Clojure Handbook的...

    reading-notes:班级读书笔记

    【描述】中的"札记"表明这是一系列深入的学习笔记,分为四个部分:“代码102-软件开发简介”、“代码201 -软件开发的基础”、“代码301-中间软件开发”和“代码401-高级软件开发”。这四个部分代表了一个逐步深入的...

    simplenote:写日志的简约风格网站,欢迎使用和建议

    札记 技术要点: RPC: 登录及权限操作redis + session处理 搜索文章基于elasticsearch (内存不够了,暂停使用☻) 评论和关注等消息基于activemq: 数据结果处理: 开发: master采用的是rpc的微服务架构。 正常...

    readingnotes:代码201阅读笔记

    札记的形式使得内容更加聚焦于关键点和理解难点,帮助读者更好地消化和吸收编程知识。 在深入阅读和理解代码的过程中,有几个重要的知识点是不容忽视的: 1. **编程基础**:这是所有程序员的起点,包括基本语法、...

    开源项目:天气预报项目源码

    通过研究这个开源项目,开发者可以学习到完整的Web应用开发流程,包括前端界面设计、后端逻辑处理、数据库操作、API集成以及项目部署等方面的知识,对提升个人技能和理解实际项目开发有着重要的作用。同时,参与开源...

Global site tag (gtag.js) - Google Analytics