java 知识点随记

JAVA

读取配置文件:

Properties props= new Properties();//文件在src目录下,编译会被加载到classpath下。

Props.load(Test.class.getClassLoader().getResourceAsStream(‘observer.properties’);

String temp = Props.getproperty(‘observers’);

HTML

非表单标签:

  1. b粗体  u 下划线  i 斜体 del 删除效果
  2. a 超链接 href  target=_blank
  3. img 图片
  4. frameset (frame)框架集
  5. table th tr td colspan rowspan
  6. ul li or
  7. embed 用来播放mp3,视频
  8. div  span行内元素,不会换行

表单标签:

1.<form>  action提交表单的地址 name method表单提交 的方式

Name(命名方式: regFrm)

FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。

然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。

在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输 协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。

2.表单域(一定要有name属性,否则该表单域的值不会被提交)

a. 文本域(text, password, textarea)

b. radio单选按钮(组)  name属性一致为一组,每一组只能提交一个值

c. checkbox复选框(组)name属性一致为一组,每一组只能提交多个值

d. select 下拉框(可以实现多选一,多选多) option

e.  file 文件域 (method=post, enctype=’multipart/form-data’

f.  hidden 隐藏域  不需要用户输入, 但是server需要的值

g.   reset 重置

h.  Submit 提交按钮

i.  button 普通按钮( 通常用来激活一个JS函数)

CSS

1.如何引用 css信息

a) 通过html元素的:style属性,class属性

b) 通过style块

c)通过引用外部的css文件 <link>

2.css 选择器

a) id选择器      #myRed{..}

b) class选择器   .myred{..}

c) 元素选择器    b{…}

JS

基本数据类型:  undefined null number string object Boolean

Eval() ,escape unescape加解密

常用对象: Date,Math, String, RegExp

Var a =[] b=new Array(); 长度随时可变

JSON:  var user={ name:’xiaozhang’,pwd:’123456’,

Sleep:function(){

}

}

函数也是对象!!

继承通过prototype来模拟。

String.prototype.trim=function(){return this.replace(“^\s+”)|(“\s+$”),’’}

Window

Open打开子窗口(opener) close 关闭窗口

定时操作: setTimeout clearTimeout, setInterval,clearInterval

navigator

navigator.userAgent.toLowerCase(), ie/firefox…

history

history.go(1)  前进一个,history.go(-1)

location

if(window.XMLHttpRequest)

new XMLHttpRequest();

else  new ActiveXObject(“Msxml2.XMLHTTP”);

JS没有多线程

1.乱码问题:request.setCharacterEncoding //设置请求实体的编码。 他对post有效

//Tomcat server.xml connection 增加一个useBodyEncodingForURI=‘true‘  //针对get方式。

Oracle:

ORACLE 分页:

select r,ename,sal from

(select rownum r, ename,sal from (select * from emp order by sal desc ))

where r>5 and r<=10;

select rownum r, t.* from (select * from emp order by sal desc)t

where rownum<=10;

minus

select rownum r, t.* from (select * from emp order by sal desc)t

where rownum<=5;

sql1992:

select ename,dname from emp,dept

where emp.deptno=dept.deptno and emp.deptno=30;

sql 1999:

select ename,dname from emp join dept on (emp.emptno=dept.deptno)

where emp.deptno=30;

内联结: outer 可以省略

select dname,ename from emp join dept on emp.deptno=dept.deptno;

左外联结:

select dname,ename from emp left join dept on emp.deptno=dept.deptno;

右外联结:

select dname,enmae from emp right join dept on emp.deptno=dept.deptno;

全外联结:

select dname,enmae from emp full join dept on emp.deptno=dept.deptno;

集合操作:

union 并集,不含重复值

unionAll

minus 前一个结果集

减去后一个结果集的差集

SELECT dev_id FROM (

SELECT dev_id FROM dev_tag_all WHERE app_key = "8aa4a89a52810799015281815b260003" AND tag_name = "nan"

UNION ALL

SELECT dev_id FROM dev_tag_all WHERE app_key = "8aa4a89a52810799015281815b260003" AND tag_name = "nv"

) a  group by dev_id HAVING COUNT(*)>1

从一个表复制到另一个表。

create table empCopy as select * from emp;

事务:

始于一个DML语句,insert update delete 语句,结束于以下几种情况:

1.commit or rollback

2.执行DDL语句

3.正常断开连接时,自动commit

4.异常断开连接时,自动rollback

求部门哪些人的薪水最高?

select ename,max_sal from emp e

join(select max(sal) max_sal,deptno from emp group by deptno) t

on (e.sal=t.max_sal and e.deptno=t.deptno)

求部门平均薪水的等级

select deptno,avg_sal,grade from salgrade s

join(select deptno,avg(sal) avg_sal from emp group by deptno) t

on(t.avg_sal between s.min_sal and s.max_sal)

求哪些是经理人

select enamefrom emp where empno in(select distinct mgr from emp);

select ename from emp where empno in(select distinct mgr from emp);

不用组函数,求薪水的最高值

select sal from emp where sal  not in(select distinct e1.sal from emp e1 join emp e2

on( e1.sal<e2.sal)

select sal from emp where sal not in ( select distinct e1.sal from emp e1 join emp e2 on (e1.sal<e2.sal))

索引:

优点: 增加查询速度

缺点: 占用空间,另外引起插入,修改,删除速度的降低。

使用时机: 唯一性好,查询次数多的

create index idx.. on empcopy(name);

序列:

create sequense seq_emcopy_id start with 1 increment by 1;

安装时的system 密码

使用system 用户为scott增加权限:

grant create view,create table to scott;

使用system 用户为scott解锁:

alter user scott account unlock;

Struts2

  1. Jar包
  2. Web.xml
  3. Struts.xml

FilterDispatcher

ActionProxy <-ConfigrationManager <-Struts.xml

ActionInvocation ->Intercepter

线程安全问题:

Struts1 单例  线程安全问题

Struts2  线程安全 ,可以任意设置属性

<constant name=’struts.i18n.encoding’ value=’gbk’/>

<constant name=’struts.devMode’ value=true/>

Action Result.

Type:

1.dispatcher(default)

2.chain  action 链

3.velocity freemarker 页面

4.redirect

5.redirectAction

6.stream 文件下载

7.xslt

8.plainText 显示原始文件内容 例如文件源代码

Name:action中引用

获取真正的 web对象

HttpServletRequest request = ServletActionContext.getRequest();

Req.getLocalAddr()获取客户IP

Request.getRealPath();  尽量少用

Request.getSession();

ServletActionContext.getServeltContext()

private String getIpAddr(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for");

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP");

}

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

}

return ip;

}

Hibernate

Hibernate3.jar /lib下

Hibernate.cfg.xml

sessionfactory

Hibernate.propertiest

开启二级缓存:

1.<property name=’hibernate.cache.use_second_level_cache”>true</property>

<property name=’hibernate.cache.provider_class”>org.hibernate.cache.EhCacheProvider</property>

2.类前面

@cache(usage=CacheConcurrencyStrategy.Ready_WRITE)

二级缓存的KEY 类全名#ID

Get load关系。 Load肯定得查到,不然就报错

搜索不到符合条件的记录,GET 返回一个null,load返回一个objectnotfoundException.

Load 有懒加载,get直接获得数据。

List()iterate() 关系:

Iterate先取ID,再去缓存中查询有没有,如果没有,再发出SQL查询

List只会往二级缓存存放数据,但是自身查询不用缓存

查询缓存 依赖于二级缓存

Key为查询语句,只对query.list()起作用。

<property name=hibernate.cache.use_query_cache>true</property>

s.createQuery(from banji).setCacheable(true).list()

LRU LFU FIFO

乐观锁:(并发性不高)

实体bean增加一个version字段。

如果当前记录被修改或删除,报错。

悲观锁:(并发性高)

事务A:s.get(Account.class,1,LockMode.UPGRADE);

事务B,如果在A 未commit时,读取会造成死锁。

Slf  (slf-log4j14-.jar转接)

Slf4j nodep / log4j /jdk logging/apache commons logging

Log4j.properties

Spring

Spring  mvc:

配置 dispatchServlet.   handleMapping HandleAdapter  ViewResolver

处理器

http://jinnianshilongnian.iteye.com/blog/1594806

相关配置:

  1. 配置前端控制器(DispatchServlet)

<servlet>

<servlet-name> ch2</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>ch2</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

  1. spring配置文件中配置handleMapping,handlerAdapter

<bean class=org.springframework.web.servlet.handler.beannameurlhandlerMapping/>

<bean class=org.springframework.web.servlet.mvc.simplecontrollerhandleradapter/>

  1. spring配置文件中配置viewResolver

<bean class=org.springframework.web.servlet.view.internalResourceviewResolver>

<property name=viewclass value=org.springframework.web.servlet.view.jstlview/>

<property name=prefix value=’/web-inf/jsp/’ />

<property name=suffix value=’.jsp’/>

</bean>

  1. 开发处理器、页面控制器
  2. 在spring配置文件添加控制器

<bean name=’/hello’ class="cn".javass.ch.web.controller.helloworldcontroller/>

  1. 开发视图页面
  1. 具体问题:(POST方式的乱码问题)
  2. <filter>
  3. <filter-name>CharacterEncodingFilter</filter-name>
  4. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  5. <init-param>
  6. <param-name>encoding</param-name>
  7. <param-value>utf-8</param-value>
  8. </init-param>
  9. </filter>
  10. <filter-mapping>
  11. <filter-name>CharacterEncodingFilter</filter-name>
  12. <url-pattern>/*</url-pattern>
  13. </filter-mapping>

applicationContext -> beanfactory

使用applicationcontext,功能更强大,(生命周期)

<bean scope=singleton/prototype/request/session/globalSession>

事务处理:

配置事务管理器 HibernateTransactionManager 指定 SESSIONFACTORY.

<bean id=txmanager class = org.springframework.orm.hibernate3.HibernateTransactionManager>

<property name=sessionFactory ref=sessionFactory></property>
</bean>

<tx:annotation-driven transaction-manager=’txmanager/>

<aop:config>

<aop:pointcut
expression=execution(public * com.sxt.service.impl.*.*(..) id=bussinessService
/>

<aop:advisor advice-ref=txAdvice pointcut-ref=businessService
/>

</aop:config>

<tx:advice id=”txAdvice” transaction-manager= txmanager >

<tx:attributes>

<tx:method name= get*
read-only=true propagation= not_supported />

<tx:method name=’*’ />

</tx:attributes>

SPRING 使用datasource.

  1. 在DAO中写datasoure 属性。setDatasource方法上@resource
  2. 在beans.xml中配置datasource bean, dbcp.basicdatasource |c3p0|proxool

JNDI 配置datasource在 application server上

<bean
id=’datasource class="org".apache.commons.dbcp.basicdatasource
destroy-method=close>

<property name=’driverClassname’ value=’’/>${jdbc.driverclassname}

<property
name=’url’ value=>

<property
name=’username’ value=>

<property
name=’password’ value=>

maxActive=80

maxIdle=20

maxWait=3000

<bean
class=org…..propertyPlaceholderConfigurer>

<property
name=locations>

<value>
classpath:jobc.properties</value>

</property>

性能的问题,要亲手测试,根据测试结果 说明问题

HTTP1.0 默认短连接

HTTP1.1默认长连接

Spring
整合hibernate:

Beans.xml下

<bean
id=sessionFactory
class=org.springframework.orm.hibernate3.Localsessionfactory>//不支持annotation

Annotation.AnnotationSessionFactoryBean
//annotation

<property
name=datasource ref=datasource/>

<property
name=mappingresources>

<list>

<value>hibernate.hbm.xml</value>

</list>

<property>d

<property
name=annotatedClasses>

<list>

<value>com.bjsxt.model.User</value>

</list>

<property>

</property>

<property
name=hibernateProperties>

<value>

Hibernate.dialect=org.hibernate.dialect.HSQLDialect

</value>

<props>

<prop key=’hibernate.dialect’>org.hibernate.dialect.MySqldIALECT</prop>

</props>

</property>

声明式的事务管理:

1.<bean id=txManager
class=org.springframework.orm.hibernate3.hibernatetransactionmanager>

Prpperty name=sessionfactory ref=sessionfactory/>

</bean>  //切面类  跨数据库用jta

2.Xmlns:tx=http://www.springframework.org/schema/tx

  1. Schemalocation:

http://www.springframework.org/schema/tx

http://www.springframework.org.schema/tx/spring-tx-2.5.xsd

  1. <tx:annotation-driven
    transaction-manager=txmanager />
  2. @Transactional 加入到相应的方法上

如果是runtimeexception  会自动回滚

相应的方法中  通过sessionfactory.getcurrenctSession.

不用手动commit

不用捕获异常

不能OPENsession.

Crud:

Dao.save(Entity)

OpenSessionInViewFilter 注意点:

1.        
必须配置在struts2 filter前面。

2.        
Filter 需要 sessionfactory bean,如果需要改名 需要在filter配置信息中加入  param-name: sessionfactorybeanname
param-value

3.        
如果不配置 transaction,会出异常

InvaliddataaccessapiUsageException
write operations are not allowed **** readonly

乱码 解决:

Filter 过滤

Spring 有characterencodingfilter 解决乱码问题

1.写在 struts2 filter前面

常用linux命令:

1.  netstat -nat|grep -i “80″|wc -l

2.  :q!

3.  :wq

4.  ps –ef|grep ‘’

5.  top:

top   //每隔5秒显式所有进程的资源占用情况
     top -d 2  //每隔2秒显式所有进程的资源占用情况

top -c  //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)

top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况

top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

6.  tail -f -n 1000 filename

7. rm -rf foldername

8. netstat -apn

分布式事务:

<bean id="datasource1"

class="com.atomikos.jdbc.SimpleDataSourceBean"
init-method="init" destroy-method="close">

<property name="uniqueResourceName" value="XADBMS_ONE"/>

<property name="xaDataSourceClassName"
value="COM.FirstSQL.Dbcp.DbcpXADataSource"/>

<property name="xaDataSourceProperties"
value="user=username;portNumber=8000"/

<property name="exclusiveConnectionMode"
value="true"/>

</bean>

<bean id="datasource2"

class="com.atomikos.jdbc.SimpleDataSourceBean"
init-method="init" destroy-method="close">

<property name="uniqueResourceName"
value="XADBMS_TWO"/>

<property name="xaDataSourceClassName"
value="COM.FirstSQL.Dbcp.DbcpXADataSource"/>

<property name="xaDataSourceProperties"
value="user=username;portNumber=8000"/

<property name="exclusiveConnectionMode"
value="true"/>

</bean>

<bean id="atomikosTransactionManager"

class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">

<property name="forceShutdown" value="true"/>

</bean>

<bean id="atomikosUserTransaction"
class="com.atomikos.icatch.jta.UserTransactionImp">

<property name="transactionTimeout" value="200"/>

</bean>

<bean id="springTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">

<property name="transactionManager"
ref="atomikosTransactionManager"/>

<property name="userTransaction"
ref="atomikosUserTransaction"/>

</bean>

<bean id="dao" class= "...">

<property name="dataSource" ref="datasource"/>

</bean>

SimpleDateFormat sdf =  new SimpleDateFormat("yyyy-MM-dd" );

Date date = sdf.parse( dates. get(1));

Calendar calendar = Calendar. getInstance();

calendar.setTime( date);

calendar.add(Calendar. DAY_OF_MONTH,1);

常见问题

1.
eclipse permgen space  问题:

debug
configrations  -   vm arguments

最后设置:

-Xms256m -Xmx512m -XX:MaxNewSize=256m
-XX:MaxPermSize=256m

2.
sessionfactory  packagesToScan属性

spring-hibernate-2.0.8.jar

spring 整合 hibernate 3.0  3.1  3.2  都需要这个包, 我们项目里是3.3 不用这个包。k

我今天把这个包去掉, 项目里缺少cglib的包,我重新把这个包单独引入 就OK了

cglib2.1.3是 关联 spring-hibernate3.jar 自动引入的 。。

3.
tomcat 启动两次

http://501565246-qq-com.iteye.com/blog/1968761

4.        
跨域

<filter>

<filter-name>CorsFilter</filter-name>

<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>

<init-param>

<param-name>cors.allowed.origins</param-name>

<param-value>*</param-value>

</init-param>

<init-param>

<param-name>cors.allowed.methods</param-name>

<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>

</init-param>

<init-param>

<param-name>cors.allowed.headers</param-name>

<param-value>Content-Type,Verify-Code,Demo-User,Timestamp,Signature,X-Bdapi-Token,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>

</init-param>

<init-param>

<param-name>cors.exposed.headers</param-name>

<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>

</init-param>

<init-param>

<param-name>cors.support.credentials</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>cors.preflight.maxage</param-name>

<param-value>10</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CorsFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

package org.creditease.cn.utils;

import java.io.IOException;

import java.util.Properties;

/**

*

* 读取properties文件的工具类

*

* @author jun li
2016-3-14

*/

public class ConfigUtils {

private
static Properties p = new Properties();

/**

* 读取properties配置文件信息

*/

static{

try
{

p.load(ConfigUtils.class.getClassLoader().getResourceAsStream("config.properties"));

} catch
(IOException e) {

e.printStackTrace();

}

}

/**

* 根据key得到value的值

*/

public static
String getValue(String key)

{

return
p.getProperty(key);

}

}

//文件编码格式校验

private boolean checkFilePattern(InputStream inputStream) throws
IOException {

boolean isUTF = false;

byte[] b = new byte[3];

try {

inputStream.read(b);

if (b[0] == -17 && b[1] == -69 && b[2] == -65)

{

isUTF = true;

}

}finally{

if(inputStream !=null)

inputStream.close();

}

return
isUTF;

}

记事本bom问题:

正如@梁海所说,“不含 BOM 的 UTF-8 才是标准形式”,的确是这样,无BOM使用得更多些,所以个人还是推荐一般情况下用无BOM的形式吧,除非有问题的时候,再考虑换有BOM的。Windows系统保存的都是有BOM的,所以你可以看到,用记事本保存一个UTF-8的txt,其实是有BOM的,这一点需要注意。另外不同的文本编辑器对于有无BOM的称呼也略有不同,比如EditPlus,有BOM的称为UTF-8+,无BOM的称为UTF-8,而在Notepad++中,有BOM的被称为标准UTF-8,而无BOM则被称为UTF-8BOM

时间: 2024-08-27 14:54:30

java 知识点随记的相关文章

容易忽略的Java知识点(整理ing)

由于最近在准备一些笔试复习到的相关Java知识点,不禁感慨:这么多年对Java懂得还太少! 1.关于finally关键字 IBMDeveloperWorks中有一篇已经说明地非常详细: 关于 Java 中 finally 语句块的深度辨析 补充下对Java设计者设计finally语句的初衷想法:我们无法知道异常发生的时间,但是我们需要确保的是无论它是否发生一些关键资源在GC回收内存时得到妥善处理(例如IO流.数据库连接等). 误区点:return前finally语句的执行机制 2.关键字sync

给Java新手的一些建议——Java知识点归纳(Java基础部分)

写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java. 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的.和Java中各个框架相关的内容. 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容. 1. JVM相

给Java新手的一些建议----Java知识点归纳(Java基础部分)

写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java. 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的.和Java中各个框架相关的内容. 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容. 1. JVM相

给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)

J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面并不仅仅是web,可以看到很多其中的规范都是通用的,目的是为了高效开发出健壮的服务企业业务模式的应用系统.J2EE中也是可以没有web界面的应用,而现在面向大众用户开发的网站往往也会使用到很多的J2EE的技术,所以J2EE和web开发的概念都是融合在了一起了. 我本人在JAVA开发刚入行的时候,也是

【转】JAVA知识点列表

网上盗链的JAVA知识点列表,学习安卓开发前对JAVA要有一个基本的了解,作为一个CheckList,有空检测下自己 1 开发环境Java SDK 下载和安装2 环境变量的配置(path和classpath)3 编程基础 标识符命名规范4 Java数据类型5 运算符6 分支语句(if,switch)7 循环语句(for,while)8 函数的定义方法9 面向对象基础 面向对象与面向过程语言之间的区别10 面向对象基本思想(封装)11 类的定义方法12 对象和类的关系13 对象的创建方法14 通过

java知识点梳理

网络搜索结果,出处不详,仅供参考 对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习! 1. JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可.不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的. JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透.我在面试有超过3年J

《Java知识点列表》V1.0

<Java知识点列表>V1.0  1 开发环境Java SDK 下载和安装 2 环境变量的配置(path和classpath) 3 编程基础 标识符命名规范 4 Java数据类型5 运算符6 分支语句(if,switch)7 循环语句(for,while)8 函数的定义方法9 面向对象基础 面向对象与面向过程语言之间的区别10 面向对象基本思想(封装)11 类的定义方法12 对象和类的关系13 对象的创建方法14 通过对象使用成员变量和成员函数的方法15 构造函数的作用16 函数的重载17 s

Java知识点归总一之堆栈

Java栈与堆 (一天一个知识点2014-07-28) ----对这两个概念的不明好久,终于找到一篇好文,拿来共享 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈数据可以共 享,详见第3点.堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java

java知识点积累(一)

知识点积累 1.关于final的重要知识点: final关键字可以用于成员变量.本地变量.方法以及类: final修饰的成员变量必须在声明时被初始化,或者在构造器中初始化,否则就会报编译错误: 不能够对final变量再次赋值: 本地变量必须在声明时赋值: 在匿名类中所有变量都必须是final变量: final修饰的方法不能被重写: final修饰的类不能被继承: 没有在声明时初始化的final变量称为空白final变量(blank final variable),他们必须在构造器中初始化,或者调