java 基础知识3
forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标
地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,
浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来
的地址。
redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请
求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以
session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的
链接地址。前者更加高效,在前者可以满足需要时,尽量使用 forward()方 法 ,
并且,这样也有助于隐藏实际的链接;
在有些情况下,比如,需要跳转到一个其
它服务器上的资源,则必须使用 sendRedirect()方法。
java集合框架小结
总结如下:
1.如果要求线程安全的,使用Vector、Hashtable
2.如果不要求线程安全,应该使用ArrayList、LinkedList、HashMap
3.如果要求有映射关系,键值对的,则使用HashMap、Hashtable
4.如果数据量大,又要使用线程安全时候,考虑Vector
java 泛型的概念
1.泛型的基本概念
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类,接口和方法的创建中,分别被称为泛型类,泛型接口,泛型方法。
Java语言引入泛型的好处就是安全简单。
在java SE 1.5之前,在没有泛型的情况下,通过对类型Object的引用来时实现参数的”任意化“,这种”任意化“带来的缺点是要做显示的强制类型转换,而这种转换要求开发者对实际的参数类型可以预知的情况下进行的,对于强制类型转换错误的情况下,编译器压根就不提示错误,在运行的时候才会出现异常,这是一个安全隐患。
泛型的好处就是:在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
下面进行举例说明:
ArrayList al=new ArrayList();
//创建一只狗
Dog dog1=new Dog();
//放入到集合中
al.add(dog1);
//取出,这个时候需要强制类型转换
Dog temp=(Dog) al.get(0);
//下面这种情况就是,在某些不知情的程序猿,以为al中放的是猫,这时候编译不报错
Cat temp_cat=(Cat)al.get(0);
这个时候如果运行程序会报类型转换异常,如下:
Exception in thread "main" java.lang.ClassCastException: com.test.Dog cannot be cast to com.test.Cat
at com.test.test.main(test.java:16)
Java Result: 1
就是说狗类对象不能转化为猫类对象。这个是在运行的时候才能知道的,在编译阶段,程序并不知道,你al里面放的是猫还是狗,所以,这就是我们前面所说的安全隐患。那怎么办呐?这时候我们就引入了泛型。
将上面的代码改变如下:
[java] view plain copy
ArrayList<Dog> al=new ArrayList<Dog>();
//创建一只狗
Dog dog1=new Dog();
//放入到集合中
al.add(dog1);
//取出,这个时候不需要强制类型转换,泛型就自动转换了,将object类型的转换为Dog类型的
Dog temp=al.get(0);
//现在下面这种情况就是,在某些不知情的程序猿,以为al中放的是猫,这时候编译报错
Cat temp_cat=(Cat)al.get(0);//错误</span>
这时候,编译器在编译的时候,语句
[java] view plain copy
<span style="font-size:18px;"> Cat temp_cat=(Cat)al.get(0);</span>
会被报错,编译器提示:不兼容的类型: Dog无法转换为Cat
2.什么时候用泛型呢?
如果你用的一个类,但是不知道这个类的类型究竟是什么,用的这个类型经常变化,可能是string interger 等等,那你总不能写很多个类吧,这样子代码的重用率很低,所以泛型主要有两个好处,一个是安全,一个是代码的从用率。只有用了泛型才知道它的好处。
当然还有其他的一些好处;
1>类型安全
2>向后兼容
3>层次清晰
4>性能较高,用泛型的java代码可以为java编译器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。
Java反射机制主要用途:可以获到一个类的很多信息,甚至返回值,修饰符等。。
- package com.test;
- import java.lang.reflect.Method;
- public class test2 {
- public static void main(String[] args) {
- Gen<Bird> gen1=new Gen<Bird>(new Bird());
- gen1.showTypeName();
- }
- }
- //定义一个鸟类
- class Bird{
- public void test(){
- System.out.println("I am a bird");
- }
- public void count(int a,int b){
- System.out.println("和为:"+a+b);
- }
- }
- //创建一个类,这个T是我认为的一种类型,但是不知道是什么类型,这就是泛型
- class Gen<T>{
- private T o;
- public Gen(T a){
- o=a;
- }
- //得到T的类型名称
- public void showTypeName(){
- System.out.println("T类型是:"+o.getClass().getName());
- //通过反射机制,我们可以得到T这个类型的很多信息
- //比如说:成员函数名称,返回类型,成员变量等
- Method[] m=o.getClass().getDeclaredMethods();
- //打印method的名字,但是还可以打印很多,修饰符,参数个数,等等。。这个只打印名字
- for(int i=0;i<m.length;i++){
- System.out.println("第"+(i+1)+"个成员方法的名字:"+m[i].getName());
- }
- }
- }
输出结果:
T类型是:com.test.Bird
第1个成员方法的名字:count
第2个成员方法的名字:test
java 基础知识3相关推荐
- Java基础看jvm,JAVA基础知识|java虚拟机(JVM)
一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...
- Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...
- java 空语句_Java空语句怎么写才正确?这样的Java基础知识才是你需要的
[摘要]在很多的高级语言中,有专门的赋值语句,我希望大家一定要了解JavaJava空语句怎么写才正确?这样的Java基础知识才是你需要的,今天小编就带大家看看Java空语句怎么写才正确?这样的Java ...
- 生活点滴:java基础知识细化
生活点滴:java基础知识细化 一.前言 越是对一门语言深入了解,就会发现自己不知道的东西越多,这才是走向了正道,同样的,对于java语言特性的学习,笔者也只是初窥门径. 二.java基础知识思考 i ...
- 【转】Java基础知识整理
本博文内容参考相关博客以及<Java编程思想>整理而成,如有侵权,请联系博主. 转载请注明出处:http://www.cnblogs.com/BYRans/ PDF版下载链接:<Ja ...
- java基础知识之初识java
java基础知识之初识java JAVA基础课后总结 一 1.计算机程序 定义:程序(Program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合. 2.指令 定义:指令就是指示机 ...
- Java基础知识总结(一)
<Java基础知识总结>系列是对自己学习Java历程中知识的一个总结,也是为自己找工作前知识的回顾,为找工作奠定基础. 1.Identifiers:标识符 ①Names of class, ...
- Java基础知识——异常Throwable和Exception
Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...
- 《Java和Android开发实战详解》——1.2节Java基础知识
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- [JSP暑假实训] 一.MyEclipse安装及JAVA基础知识
本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识.非常基础的文章, ...
最新文章
- 快速理解mysql主从,主主备份原理及实践
- Android CountDownTimer倒计时器的使用
- mysql8安装错误_Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法
- 前n个正整数相乘的时间复杂度为_初一数学必学必考的21个知识点,附第一章有理数测试卷...
- Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError)
- linux下如何产生core,调试core
- [BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流
- 【英语学习】【English L06】U01 Breakfast L4 Drink Morning Tea
- 10.Hello World 的 Java 项目创建和项目配置文件讲解
- 自动驾驶 5-1 比例积分微分 (PID) 控制Lesson 1: Proportional-Integral-Derivative (PID) Control
- vs2010格式化html,VS中的快捷键快速格式化代码,使好看,整齐
- linux命令中tar什么意思,Linux中tar命令起什么作用呢?
- “OpenFeign“ 调取第三方服务接口时出现的“Connection reset“ 解决方案
- 吉哥系列故事——礼尚往来
- 什么是Numpy、Numpy教程
- 汇佳学校|牛畅:帕森斯摄影专业,累计130万奖学金,我用照片沉淀时间
- 【秋无痕作品】Windows7SP1(32位)+XPSP3集成安装版V201108
- 步进电机的转矩与功率的换算公式
- PageAdmin CMS网站制作教程:如何创建及管理栏目?
- 查看电脑已连接过的账号密码