我的java培训日记-1

来源:互联网 发布:淘宝联盟api接口 编辑:程序博客网 时间:2024/05/12 20:17

              传智播客北京java培训日记-1 

 

1. XML文档声明
在一个xml文档中必须包含一个文档声明,该声明必须位于文档的第一行,这个声明表示该文档是一个xml文档,以及遵循的是哪个xml版本的规范。
<?xml version="1.0" ?>
在< 和 ? 和 xml 之间、? 和 > 之间不能有空格,在第二个?前可有没有,也可以有一个或多个空格。
XML目前只有一个版本,就是1.0
<?xml version="1.0" encoding="GBK" ?>
encoding属性是用来指明文档的字符编码方式。
默认编码方式是两种unicode编码(UTF-8,UTF-16),如果文档中的字符是以UTF-8或UTF-16作为编码,则可以不用设置这个属性
2. XML标记的规范
标记名称中可以包含字母数字以及其他一些可见字符,还必须遵守一些规律:
区分大小写;
不能以数字或下划线开头;
不能以字母组合xml,XML,Xml等开头;
不能包含空格;
名称中间不能包含(:)冒号;
还有一些建议:
不要使用;
不要用减号(-),应该以下划线代替;
名称空间中可以使用非英文字符;
属性值必须用单引号或双引号引起来。
注释:<!--  -->
注意:注释也不能出现在声明语句的前面,注释不能嵌套使用。
注释中不能出现连续的2个减号,例如:
<!---------------------------------->这是不行的
<!-- ============================ -->这样可以
CDATA区
CDATA区是指不想被解析程序解析的一片原始数据区
格式:<![CDATA[ 数据
]]>
与CDATA区类似的一个小技巧
<%@page pageEncoding="GBK"%>
<form>
<input type="hidden" name="email" value="${param.email}"/>
请输入用户名:<input type="text" name="name" />
</form>
如果给隐藏字段传递的参数是“zxx" a="b”,那么也会出问题,这时候就应该用CDATA区,对于程序生成值时,一定要考虑值的特殊情况。
4. JSP文件涉及了两个编码
<%@page pageEncoding="GBK"%>
源文件是用什么码写的,这里是GBK
<%@page contentType="text/xml;charset=UTF-8"%>
程序执行后以什么码输出结果,这里是UTF-8
java程序中的字节码都是Unicode码,当用javac编译原文件时就涉及到一个编码转换的过程,javac编译时可以指定编码:
javac -encoding UTF-8 Test.java
告诉javac,源文件是UTF-8编码,如果不写-encoding参数,则用操作系统默认的编码。
5. 十进制转十六进制编码转换程序
public class CodeTest
{
public static void main(String args[])
{
char c[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
byte b = (byte)Integer.parseInt(args[0]);
//b在位移时会先自动转换成int后再位移,这是取出高四位
System.out.print(c[(b>>4) & 0x0f]);
System.out.println(c[b & 0x0f]);//取出低4位
}
}
比如输入的是150
b=二进制的 10010110
移位时自动转换为int型 11111111 11111111 11111111 10010110
位移四位取高位 11111111 11111111 11111111 11111001
与0x0f  00001111
就得到高4位 1001
6. ContentType
告诉浏览器文件为什么格式,例如:
text/html 为网页格式的文件
audio/x-mp3 为音频浏览器会自动打开音频播放器等等。。。
7. 区分文本中的中英文字符程序
public class EnCnTest
{
public static void main(String args[])
{
byte buf[] = args[0].getBytes();
boolean halfChinese = false;
for(int i=0;i<buf.length;i++)
{
if(halfChinese)
{
byte ch[] = {buf[i-1],buf[i]};
System.out.println("索引"+(i-1)+"位置为中文("+new String(ch)+")");
halfChinese = false;
continue;
}
if((buf[i] & 0x80) == 0)
{
System.out.println("索引"+i+"位置是英文("+(char)buf[i]+")");
}
else
{
halfChinese = true;
}
}
}
}
详细:www.itcast.cn