java知识零碎整理

&与&&有什么区别?

按位与:a&b是把ab都转换成二进制数然后再进行与的运算;

逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。


面向对象的特征有哪些方面?

抽象 继承 封装 多态

String 是最基本的数据类型吗?

不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),Java 5以后引入的枚举类型也算是一种比较特殊的引用类型。

float f=3.4;是否正确?

不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;

short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 

答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

servlet的生命周期
  1. Servlet 生命周期:Servlet 加载--->实例化,初始化--->处理请求--->服务结束。
  2. init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
  3. service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
  4. destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
EL存取变量数据

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
     因为我们并没有指定哪一个范围的username,所以它会依序从PageRequestSessionApplication范围查找。
     假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null
     属性范围在EL中的名称
         Page          PageScope
         Request          RequestScope
         Session          SessionScope
         Application      ApplicationScope


EL运算符

   1.算术运算符有五个:+-*$/div%mod
   2.关系运算符有六个:==eq!=ne<lt>gt<=le>=ge
   3.逻辑运算符有三个:&&and||or!not
   4.其它运算符有三个:Empty运算符、条件运算符、()运算符


一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发。

一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源,称之为请求重定向。


保存会话的两种技术

Cookie是把用户的数据写给用户的浏览器。

Session技术把用户的数据写到用户独占的session中。


解决中文乱码问题,解决中文乱码问题有三种方法

1)通过设置响应的头来处理的

response.setHeader("Content-Type","text/.html;charset=UTF-8");

2)通过字节设置响应的头来处理的

response.getOutputStream().write("中国".getBytes("UTF-8"));

3)使用html语言里面的<meta>标签来控制浏览器行为

response.getOutputStream().write("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">".getBytes());


Spring工作原理


1spring原理 

      内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。  
      Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过  配置类达到的。  
      Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)


JDBC编码步骤


// 1、注册驱动
DriverManager.registerDriver(new com. MySQL .jdbc.Driver());
// 2、获取与数据库的链接
Connection conn = DriverManager.getConnection("jdbc: mysql ://localhost:3306/day15", "root", "");
//System.out.println(conn.getClass().getName()); 要想知道具体类型,就这么办
// 3、创建代表SQL语句的对象
Statement stmt = conn.createStatement();
// 4、执行SQL语句
ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from users");
// 5、如果是查询语句,需要遍历结果集
while(rs.next()){
System.out.println("---------------------");
System.out.println(rs.getObject("id"));
System.out.println(rs.getObject("name"));
System.out.println(rs.getObject("password"));
System.out.println(rs.getObject("email"));
System.out.println(rs.getObject("birthday"));
}
// 6、释放占用的资源
rs.close();
stmt.close();
conn.close();
}
jsp九大内置对象

request           请求对象             类型 javax.servlet.ServletRequest        作用域 Request

response          响应对象              类型 javax.servlet.SrvletResponse        作用域 Page

pageContext       页面上下文对象        类型 javax.servlet.jsp.PageContext       作用域 Page

session           会话对象              类型 javax.servlet.http.HttpSession      作用域 Session

application       应用程序对象          类型 javax.servlet.ServletContext        作用域 Application

out               输出对象              类型 javax.servlet.jsp.JspWriter         作用域 Page

config            配置对象              类型 javax.servlet.ServletConfig         作用域 Page

page              页面对象              类型 javax.lang.Object                   作用域 Page

exception         例外对象              类型 javax.lang.Throwable                作用域 page



已知字符串为:"good good study,day day up"

思路:

1.创建一个map        key:出现的字符  value:出现的次数
 2.获取字符串中的每一个字符
 3.查看字符是否在Map中作为key存在.若存在:说明已经统计过  value+1  不存在:value=1


  1. public class CountString {  
  2.     public static void main(String[] args) {  
  3.         String str = "good good study,day day up";  
  4.         Map<Character,Integer> map = new HashMap<Character,Integer>();  
  5.         for(int i=0;i<str.length();i++){  
  6.             char c = str.charAt(i);//用toCharArray()也可以  
  7.             if(map.containsKey(c)){//若统计过  
  8.                 map.put(c, map.get(c)+1);  
  9.             }else{  
  10.                 map.put(c, 1);  
  11.             }  
  12.         }  
  13.         System.out.println(map);  
  14.     }  
  15. }  

测试结果如下:

[java]  view plain  copy
  1. { =4, p=1, a=2, s=1, d=5, t=1, u=2, g=2, y=3, ,=1, o=4
Sleep()与wait()方法的区别

sleep()可以将一个线程睡眠,参数可以指定一个时间。
wait()可以将一个线程挂起,直到超时或者该线程被唤醒。
线程的状态
在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡
实现并启动线程有两种方法
1、写一个类继承自Thread类,重写run方法。用start方法启动线程
2、写一个类实现Runnable接口,实现run方法。用new Thread(Runnable target).start()方法来启动

5种spring配置事务的方式
1.每个Bean都有一个代理
2.所有Bean共享一个代理基类
3.使用拦截器
4.使用tx标签配置拦截器
5.全注解
多线程原理
案例:相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等CPU选中你就是轮 到你,你就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()。

理论:调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态。然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。先调用start后调用run,这么麻烦,为了不直接调用run?就是为了实现多线程的优点,没这个start不行。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值