1)
IDEA导入的web项目终于调试成功,最重要的地方有几点:
1.导入的项目中如果有要继承HttpServlet,则需要另外导入Servlet包,具体在Tomcat安装路径下的lib中servlet-api.jar、jsp-api.jar(jsp-api.jar好像可以不导,导了也不影响什么)。
2.在配置Tomcat的时候,需要在Deployment中添加项目和Tomcat中的ROOT(很重要);我的ROOT具体路径是:E:\Tomcat9.0\work\Catalina\localhost\ROOT。
3.在页面输入URL时,先要确定能访问到http://localhost:8080,确定Tomcat配置成功
进行访问输入:http://localhost:8080/WebContent/fileName.jsp
*这个和Eclipse不一样,没有项目地址,直接访问webContent/文件名.jsp。
其实这个Tomcat配置404错误的解决办法五花八门,只不过我的问题是这么解决的,其他人的就不一定了。
2)
java的包装类(WrapperClass)
为什么会存在java的包装类呢?
答:java有8种基本数据类型,但是这8种基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备“对象”的特性(特性:有成员变量、方法可以被调用)。
java之所以提供8种基本数据类型,主要是为了照顾程序员的传统习惯。平常情况下,基本数据类型带来一定的方便性,例如可以进行简单、有效的常规数据处理。单周某些
时候,基本数据类型会有一些制约,例如所有引用类型都继承了Object类,都可以当成Object类型变量使用。但基本数据类型的变量就不可以。所以为了解决这种情况,java
提供了包装类(WrapperClass)的概念,为8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类。所以,一定要记住,包装类是相对于基本数据类型来
说的,只有8种,String不是包装类。
对应:基本数据类型<--->包装类(除了int和char特殊点,其他的只是将首字母大写而已)
byte <---> Byte
short <---> Short
int <---> Integer
long <---> Long
char <---> Character
float <---> Float
double <---> Double
boolean<---> Boolean
在JDk1.5之前,想把基本数据类型变成包装类,需要通过对应的包装类构造器来实现,不仅如此,8个包装类除了Character之外,还可以通过传入一个字符串参数来构建包装类
的对象。在JDK1.5之前,可以通过“包装器实例.XXXValue()”将包装类对象装换为基本类型变量。
但是,在jdk1.5的时候,这种繁琐的转换就消除了,jdk1.5提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能。
自动装箱(Autoboxing):把一个基本数据类型变量直接赋给对应的包装类变量,或者赋给Object变量(Object是超类,子类对象可以直接赋给父类变量);
自动拆箱(AutoUnboxing):与拆箱相反,允许把包装类对象直接赋给一个对应的基本数据类型变量。
举例:
Integer inObj = 5;//(自动装箱)直接将基本数据类型变量赋给Integer对象
int i = inObj;//(自动拆箱)直接把Integer对象赋给int类型的变量
注意:要类型匹配,不要妄想将int类型装箱成Boolean对象。
包装类实现基本数据类型变量和字符串之间的转换:
把字符串类型的值转换成基本类型的值有2种方式:
1.利用包装类提供的parseXxx(String s)静态方法(注意:除了Character之外的所有包装类都提供了该方法);
2.利用包装类提供的Xxx(String s)构造器。
把基本类型转换为字符串:
1.String类提供了多个重载ValueOf()方法实现该功能。
2.String str = 5 + "";//直接将基本数据类型变量与""进行连接运算
例:String intStr = "123";
int it1 = Integer.parseInt(intStr);//把一个特定字符串转化成int变量
int it2 = new Integer(intStr);//把一个特定字符串转化成int变量
String intStr1 = it1.ValueOf();//把一个int变量转化为字符串
**注意:虽然包装类是引用类型,但包装类的实例可以与数值类型的值进行比较,这种比较是直接取出包装类实例所包装的数值来进行比较的。
如果是2个包装类的实例比较就比较麻烦了,只有2个包装类引用指向同一对象时才返回true。
例:Integer a = new Integer(6); 返回: a>5;//true
new Integer(2) == new Integer(2); //false
但是,自动装箱也会出现一些问题:
Integer intA = 2; Integer intB = 2; System.out.println(intA==intB);//返回true
Integer intC = 128;Integer intD = 128; System.out.println(intC==intD);//返回false
为什么呢?
看一下java.long.Integer源码:
//定义一个长度256的Integer数组
static final Integer[] cache = new Integer[-(-128)+127+1];
static{
//执行初始化,创建-128到127的Integer实例,并放在cache数组中
for(int i = 0;i<cache.length;i++){
cache[i] = new Integer(i-128);
}
}
可以看出,系统把-128~127之间的整数自动装箱成Integer实例,并放在一个名为cache的数组中缓存起来。所以以后再-128~127之间的整数自动装箱成一个实例,实际上是直接指向对应数组元素,
在-128~127之间同一个数自动装箱成实例时,永远是一个数组元素,而在范围外的,自动装箱每次都会重新创建一个Integer实例。
在java7中,又为包装类提供了一个静态的compare(xxx val1, xxx val2)方法,用来比较2个基本数据类型值的大小,就连boolean类型都可以。
compare(true,false);//输出1
compare(true,true);//输出0
compare(false,true);//输出-1
3)
JSON :JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比XML更小、更快,更易解析。
JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON文本格式在语法上与创建JavaScript对象的代码相同。
JSON与XML的区别和相同点:
相同:1.纯文本;2.具有“自我描述性”(可读);3.具有层次结构(值中存在值);4.可通过JavaScript进行解析;5JSON数据可使用AJAX进行传输
不同:1.没有结束标签;2.更短;3.读写速度更快;4.能够使用内建的JavaScript eval()方法解析;5.使用数组;6.不使用保留字
JSON语法规则;
数据在名称/值对中
数据由逗号分隔
大括号对象
中括号保存数组
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;
例:"name":"cool" <==> name = "cool";(javascript语句)
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在中括号中)
对象(在大括号中)
null
JSON文件的类型时 .json
JSON文本的MIME类型时 application/json
对于JSON数组还可以通过for-in语句来访问
"arr" : ["A","B","C"];
for(i in arr){
x + = arr[i] +"</br>";
}
其他访问方法和以往没什么不同
最后,还要强调一下,eval()函数可以解析JSON文本,生成JavaScript对象。但是必须把文本包围在括号中,才能避免语法错误:
var txt = '{ "sites" : [
'+'{ "name" : "hello" , "action" : "speak" },
'+'{ "name":"word" , "action":"nation" },
'+'{ "name":"!" , "=":"?" }
]
}';
var obj = eval( "(" + txt + ")" );
IDEA导入的web项目终于调试成功,最重要的地方有几点:
1.导入的项目中如果有要继承HttpServlet,则需要另外导入Servlet包,具体在Tomcat安装路径下的lib中servlet-api.jar、jsp-api.jar(jsp-api.jar好像可以不导,导了也不影响什么)。
2.在配置Tomcat的时候,需要在Deployment中添加项目和Tomcat中的ROOT(很重要);我的ROOT具体路径是:E:\Tomcat9.0\work\Catalina\localhost\ROOT。
3.在页面输入URL时,先要确定能访问到http://localhost:8080,确定Tomcat配置成功
进行访问输入:http://localhost:8080/WebContent/fileName.jsp
*这个和Eclipse不一样,没有项目地址,直接访问webContent/文件名.jsp。
其实这个Tomcat配置404错误的解决办法五花八门,只不过我的问题是这么解决的,其他人的就不一定了。
2)
java的包装类(WrapperClass)
为什么会存在java的包装类呢?
答:java有8种基本数据类型,但是这8种基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备“对象”的特性(特性:有成员变量、方法可以被调用)。
java之所以提供8种基本数据类型,主要是为了照顾程序员的传统习惯。平常情况下,基本数据类型带来一定的方便性,例如可以进行简单、有效的常规数据处理。单周某些
时候,基本数据类型会有一些制约,例如所有引用类型都继承了Object类,都可以当成Object类型变量使用。但基本数据类型的变量就不可以。所以为了解决这种情况,java
提供了包装类(WrapperClass)的概念,为8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类。所以,一定要记住,包装类是相对于基本数据类型来
说的,只有8种,String不是包装类。
对应:基本数据类型<--->包装类(除了int和char特殊点,其他的只是将首字母大写而已)
byte <---> Byte
short <---> Short
int <---> Integer
long <---> Long
char <---> Character
float <---> Float
double <---> Double
boolean<---> Boolean
在JDk1.5之前,想把基本数据类型变成包装类,需要通过对应的包装类构造器来实现,不仅如此,8个包装类除了Character之外,还可以通过传入一个字符串参数来构建包装类
的对象。在JDK1.5之前,可以通过“包装器实例.XXXValue()”将包装类对象装换为基本类型变量。
但是,在jdk1.5的时候,这种繁琐的转换就消除了,jdk1.5提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能。
自动装箱(Autoboxing):把一个基本数据类型变量直接赋给对应的包装类变量,或者赋给Object变量(Object是超类,子类对象可以直接赋给父类变量);
自动拆箱(AutoUnboxing):与拆箱相反,允许把包装类对象直接赋给一个对应的基本数据类型变量。
举例:
Integer inObj = 5;//(自动装箱)直接将基本数据类型变量赋给Integer对象
int i = inObj;//(自动拆箱)直接把Integer对象赋给int类型的变量
注意:要类型匹配,不要妄想将int类型装箱成Boolean对象。
包装类实现基本数据类型变量和字符串之间的转换:
把字符串类型的值转换成基本类型的值有2种方式:
1.利用包装类提供的parseXxx(String s)静态方法(注意:除了Character之外的所有包装类都提供了该方法);
2.利用包装类提供的Xxx(String s)构造器。
把基本类型转换为字符串:
1.String类提供了多个重载ValueOf()方法实现该功能。
2.String str = 5 + "";//直接将基本数据类型变量与""进行连接运算
例:String intStr = "123";
int it1 = Integer.parseInt(intStr);//把一个特定字符串转化成int变量
int it2 = new Integer(intStr);//把一个特定字符串转化成int变量
String intStr1 = it1.ValueOf();//把一个int变量转化为字符串
**注意:虽然包装类是引用类型,但包装类的实例可以与数值类型的值进行比较,这种比较是直接取出包装类实例所包装的数值来进行比较的。
如果是2个包装类的实例比较就比较麻烦了,只有2个包装类引用指向同一对象时才返回true。
例:Integer a = new Integer(6); 返回: a>5;//true
new Integer(2) == new Integer(2); //false
但是,自动装箱也会出现一些问题:
Integer intA = 2; Integer intB = 2; System.out.println(intA==intB);//返回true
Integer intC = 128;Integer intD = 128; System.out.println(intC==intD);//返回false
为什么呢?
看一下java.long.Integer源码:
//定义一个长度256的Integer数组
static final Integer[] cache = new Integer[-(-128)+127+1];
static{
//执行初始化,创建-128到127的Integer实例,并放在cache数组中
for(int i = 0;i<cache.length;i++){
cache[i] = new Integer(i-128);
}
}
可以看出,系统把-128~127之间的整数自动装箱成Integer实例,并放在一个名为cache的数组中缓存起来。所以以后再-128~127之间的整数自动装箱成一个实例,实际上是直接指向对应数组元素,
在-128~127之间同一个数自动装箱成实例时,永远是一个数组元素,而在范围外的,自动装箱每次都会重新创建一个Integer实例。
在java7中,又为包装类提供了一个静态的compare(xxx val1, xxx val2)方法,用来比较2个基本数据类型值的大小,就连boolean类型都可以。
compare(true,false);//输出1
compare(true,true);//输出0
compare(false,true);//输出-1
3)
JSON :JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比XML更小、更快,更易解析。
JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON文本格式在语法上与创建JavaScript对象的代码相同。
JSON与XML的区别和相同点:
相同:1.纯文本;2.具有“自我描述性”(可读);3.具有层次结构(值中存在值);4.可通过JavaScript进行解析;5JSON数据可使用AJAX进行传输
不同:1.没有结束标签;2.更短;3.读写速度更快;4.能够使用内建的JavaScript eval()方法解析;5.使用数组;6.不使用保留字
JSON语法规则;
数据在名称/值对中
数据由逗号分隔
大括号对象
中括号保存数组
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;
例:"name":"cool" <==> name = "cool";(javascript语句)
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在中括号中)
对象(在大括号中)
null
JSON文件的类型时 .json
JSON文本的MIME类型时 application/json
对于JSON数组还可以通过for-in语句来访问
"arr" : ["A","B","C"];
for(i in arr){
x + = arr[i] +"</br>";
}
其他访问方法和以往没什么不同
最后,还要强调一下,eval()函数可以解析JSON文本,生成JavaScript对象。但是必须把文本包围在括号中,才能避免语法错误:
var txt = '{ "sites" : [
'+'{ "name" : "hello" , "action" : "speak" },
'+'{ "name":"word" , "action":"nation" },
'+'{ "name":"!" , "=":"?" }
]
}';
var obj = eval( "(" + txt + ")" );