对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。
问题一:我声明了什么!
String s = "Hello world!";
许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string = s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
问题二:"=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b ......
一、关系
在java中,最基本的单位就是类。类是一个抽象概念,是某一类事物或物品的属性以及行为的集合。对象则是指某一具体的事物或物品,是实实在在的。举例说明一下:有一个电脑类,属性有键盘、鼠标等等,行为如打字、学习等等,我有这样一台电脑,那这台电脑就是一个电脑类的对象。
二、对象的声明与创建
对象的声明:类名 对象名;
对象的创建:对象名 = new 类名();
new 为关键字。
三、在内存中的分布
java 的内存空间分为两种,一种是堆空间,一种是栈空间。
现在有一个Person 类,来看看具体情况:
1、 申明一个对象
Person person;
这时JVM(java虚拟机)会在内存中划分一块相应的区域,标记为person.
这时并没有创建任何对象,这个对象会分配到栈空间。
2、 创建一个对象
person = new Person();
这时JVM会为名为person的对象名创建一个 ......
敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的代码质量。
Java项目开发过程中,由于开发人员的经验、Java代码编写习惯,以及缺乏统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维 护,需要较大的测试投入和周期等问题。这些问题在一个项目组初建、需求和设计均具有不完全可预期性和完备性的全新项目中将尤为突出。
如图1所示,敏捷开发过程经历需求调研,用例分析和用例分解,进入开发迭代阶段。在每个迭代过程中,可以采用以下步骤来保证和提高整个项目的代 码质量:统一编码规范、代码样式;静态代码分析(staticcodereview);单元测试;持续集成;代码评审和重构 (Review&Refactor)。下文将针对每个步骤和其所使用的工具、方法进行详细描述。
图1.敏捷开发中的Java代码质量保证步骤
步骤一:统一编码规范、代码样式
规范统一的编码会增加项目代码的可读性和可维护性,但实际情况往往是项目组内的Java代码开发人员的编码风格常常各不相同,这可能是由于不同 的经验习惯或者缺乏编码规范方面的学习造成的。这样一来,其他项目成员或者维护人员在阅读项目代码时就需要花费更多的时间来 ......
Axis2生成客户端方式
基于StockQuoteService类创建客户端的四种方式
构建基于AXIOM的客户端;
使用Axis2 Databinding Frame work(ADB)生成客户端;
使用XMLBeans生成客户端;
使用JiBX生成客户端。
ADB:最简单的生成Axis客户端的方法。大部分情况下,这些主要的类都会以内部类的形式创建在stub类中。It is not meant to be a full schema binding application, and has difficulty with structures such as XML Schema element extensions and restrictions。 be meant to:有意要、打算
XMLBeans:与ADB不同,他是一个全功能的schema编译器。他没有ADB的限制。然而,他也比ADB用起来更复杂。他会产成大量的文件,编程模型不如ADB直观。
JiBX:他是一个数据绑定框架。他不仅提供了WSDL-JAVA的转换,而且提供了JAVA-XML的转换。JiBX相当灵活,允许你选择类来代表你的实体,但是这个却不好做,但还句话说,如果这些都能建好,那么使用JiBX就更使用ADB一样容易。
对于简单应用来说ADB已经够用了,如果想用更加强大更加灵活的功能,那么你可能需要使用其他两种方式。
Axis2提供的四种调用模式
Web services可以 ......
一、表单提交中文数据出现乱码:
(1) post 提交方式乱码解决方法:
使用过滤器过滤请求,在过滤器中添加 request.setCharacterEncoding("UTF-8");
(2)get提交方式乱码解决方法:
在tomcat的server.xml文件中修改配置如下:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
URIEncoding="UTF-8" 用于指定URL参数的字符编码 ......
Java代码
package com.sunnylocus.util;
import java.security.MessageDigest;
/**
* 对密码进行加密和验证的类
*/
public class CipherUtil{
//十六进制下数字到字符的映射数组
private final static String[] hexDigits = {"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
/** * 把inputString加密 */
public static String generatePassword(String inputString){
&nbs ......