1:String 字符串中“==”号是左右两个变量是否指向同一内存地址;“equals()”是指两个object是否一样;(所有成员的值都相同)
String a= “abc”; String b=”abc”; a==b;//true a.equals(b);//true | String a=new String (“abc”); String b=new String(”abc”); a==b;//false a.equals(b);//true |
“abc”是放在常量池中的,内存中只有一份副本,所以ab指向同一地址; | new 方法决定了两个不同的String“abc”被创建放在了内存heap区,分别被ab所指向,所以==是false |
String a= “abc”;///jvm先根据内容“abc”查找对象,如果没有找到,则在heap上创建新对象,在将其赋给s String a=new String (“abc”);///jvm在heap上直接创建新对象,所以在heap中会出现内容相同而地址不同的String对象 |
2:Constant Pool常量池
在java编译好的class文件中,有个区域称为Constant Pool,他是一个有数组组成的表,类型为cp_info constant_pool[],用来存储程序中使用的各种常量。
String pool是对应于Constant Pool中存储的String常量的区域;对于相同的常量,Constant Pool只会创建一个;
在程序执行过程中,Constant Pool会存储在Method Area中,而不是在堆中;对于“”的空字符串也会创建一个长度为0内容为空的字符串;且Constant Pool在运行状态是可以扩展的。
例:
String s=new String(“aabb”);///使用new创建一个新对象存在heap中。吧引用返回,与Stringpool无关;
s=s.intern();///调用此方法,如果stringpool以及包含相同字符串,就会返回池中的字符串,否则就会将String对象添加到池中,并返回此对象在stringpool中的引用
String s1=new String(“bb”);
String s2=”aabb”;
String s3=”aa”+”bb”;//s2=s3
String s4=”aa”+s1;///因为s1是常量,在编译期间不能确定特的值,所以会在执行的时候会创建一个新string对象存储在heap中然后赋值s4; 所以s2!=s4 但是s2=s4.intern()
3:String s1=”abcdefg”; s2=s1.substring(3,5);///java的substring是前包括后不包括的,所以s2=”de”
数组不能直接指定行数和列数:如int aa[3][4];是错误的;应该在创建对象时定义:如int aa[][]=new int[3][4];
4:StringBuffer
public static void main(String[] args){ StirngBuffer a = new StringBuffer("A"); StirngBuffer b = new StringBuffer("B"); operate(a,b); System.out.println(a+","+b); } void operate(StringBuffer x,StringBuffer y){ x.append(y); y=x; } ///输出的结果为AB,B |
5:String对象与变量的区别:
String A=”a”;///此处创建一个对象和一个引用A 1
String B=“b”;/// 1
A=A+B;///此处创建了一个对象,并由引用A来引用,那么A原来指向的对象就成为了垃圾对象,被回收 1
StringBuffer D =new StringBuffer(”abc”);//此行产生两个对象,”abc”与new创建出来的 1
D=D.append("123");///4-5行都是对同一对象进行处理,字符串本身就是对象,所以有两个 1
1)引用变量与对象:A aa;声明了一个A类的引用变量,而对象一般通过new创建;而D仅仅是一个引用变量,他不是对象,而“abc”本身就是一个Stirng对象;
2)
String a=”aa”; String b=”aa”; ///在pool中创建一个对象:”aa” | String a=new Stirng(”aa”); String b=new Stirng(”aa”); //在pool中有一个对象,heap中有两个(“aa”本身就是pool的一个对象)两个new就有两个heap中的 |
6:设计模式:
Singleton模式主要作用是保证java程序中,一个类class只有一个实例存在。Singleton模式通常有两种形式:
第一种(饱汉):定义一个类,构造函数为private;它有一个static的private变量,在初始化时就实例化;通过一个public的方法获取该对象的引用;
public class Singleton{
private Singleton(){}//private的构造方法,只供内部使用
private static Singleton instance = new Singleton();//一个static private的变量,同时实例化
public static Singleton getInstance(){//供外部访问class的静态方法,可以直接访问
return instance;
}
}
第二种(饥汉):改进上一种方法,不用每次都进行生成对象,只是第一次;使用时生成实例,提高效率
public class Singleton{
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
if(instance==null)
instance= new Singleton();//不用每次都进行生成对象(new)
return instance;
}
}
更实际的应用(在什么情况用单例)
public class SequenceGenerator{
//下面是该类自身的业务功能代码
private int count = 0;
public synchronized int getSequence(){
++count;
}
//下面是把该类变成单例的代码
private SequenceGenerator(){}
private final static instance = new SequenceGenerator(); public static SingleTon getInstance(){
return instance;
}
}
7:struts下的MVC模式:
MVC模式(mode是应用对象 view是界面显示 controller定义用户界面对用户输入的响应方式)
Model是应用程序的主要部分,model表示业务数据或者业务逻辑;view是应用程序中用户界面相关的部分;controller是根据用户的输入控制用户界面数据显示和更新model对象状态;
MVC模型实现了功能模块与显示模块的分离,同时他还提高了应用系统的可维护性、可扩展性、可移植性、组件的可复用性;
Model:即处理业务逻辑的模块,每一种处理一个模块;
View:负责页面显示,显示 MODEL 处理结果给用户,主要实现数据到页面转换过程;
Control:负责每个请求的分发,把 FORM 数据传递给 MODEL 处理,把处理结果的数据传递给 VIEW 显示。
MVC 的各个部分都有那些技术来实现?如何实现
MVC 是 Model - View -Controller 的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
1:B/S与C/S的联系与区别:
| C/S是client/Server的缩写,是客户机与服务器结构的应用程序;服务器通常采用高性能的PC、工作站、或小型机;并采用大型数据库系统如oracle、SQL server等;客户端需要安装专用的客户端软件。 | B/S是brower/server的缩写,是浏览器和服务器结构的应用程序,即web应用程序;客户机需要安装浏览器,服务器需要安装oracle、sql server等数据库;浏览器通过webserver同数据库进行数据交互。 |
硬件环境不同 | C/S一般建立在专业的网络上,小范围网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。 | B/S在广域网上,不必专门的网络硬件环境,例电话上网,有更强的适用范围,一般只要有操作系统和浏览器就行。 |
对安全要求不同 | 一般面向固定的用户群,对信息安全控制能力强;可用于机密系统; | 建立在广域网上,对安全控制能力差,可能面对不知名用户。(可公开部分信息) |
对程序架构不同 | 可以更加注重流程,可以对权限多层次校验,对系统运行速度较少考虑。 | 对安全及访问速度有多重考虑,建立在需要更加优化的基础上。 |
软件重用不同 | 需要整体性考虑,重用性差。 | 要求构件相对独立功能,能够较好重用。 |
系统维护不同 | 由于整体性,必须整体考虑,处理出现的问题以及系统升级较难;可能重新做一个新系统 | 可以个别构件更换,系统维护开销小。直接下载就可以升级 |
处理问题不同 | 可以处理用户面固定且在相同区域,安全要求高,与操作系统有关,应该都是相同的系统 | 在广域网,面向不同的用户群,分散地域,与操作系统的关系小 |
用户接口不同 | 建立在windows平台上,表现方法有限,难度高 | 建立在浏览器上,有丰富的表现方法和用户交流,难度低,开发成本低 |
信息流不同 | 一般是典型的中央集权的机械是处理,交互性低 | 信息流向可以变化,更像交易中心 |