Java零散知识2

1、类信息、常量、静态变量等数据储存在方法区,只会在类加载的时候储存一次,地址一样。

2、鲁棒性(Robust,即健壮性)     Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生 的错误。通过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外, Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。     (1)java能检查程序在编译和运行时的错误     (2)java自己操纵内存减少了内存出错的可能性     (3)java还实现了真数组,避免了覆盖数据的可能

3、数组有length属性,字符串只有length()方法

4、Servlet的生命周期一般可以用三个方法来表示:     (1). init():仅执行一次,负责在装载Servlet时初始化Servlet对象            初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法     (2). service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。

(3). destory():在停止并且卸载Servlet时执行,负责释放资源 初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。所以选ACD。B是在调用service方法时才构造的          (4) 属于初始化阶段是

1.  加载Servlet类及.class对应的数据

2. 创建ServletConfig对象

3. 创建Servlet对象

GenericServlet类:抽象类,定义一个通用的、独立于底层协议的Servlet。  大多数Servlet通过从GenericServlet或HttpServlet类进行扩展来实现  ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象  HttpServletRequest接口扩展ServletRequest接口,为HTTP Servlet提供HTTP请求信息

5、Struts工作原理      MVC 即Model-View-Controller的缩写,是一种常用的设计模式。MVC   减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。      Struts   是MVC的一种实现,它将   Servlet和   JSP   标记(属于   J2EE   规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。

6、Java连接数据库         Class.forName("oracle.jdbc.driver.OracleDriver");  //加载驱动依赖类   Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@" + "localhost:1521:orcl","usermanager","abc123");            //利用驱动获取数据库的连接管道 conn   Statement stat = conn.createStatement();          //给管道安排一个sql语句的封装对象      ResultSet rs = stat.executeQuery("select * from userinfo where username=‘"+name+"‘");             //执行语句并返回结果集合 resultSet    while(rs.next()) {          //迭代一行数据 rs.next()   System.out.println(rs.getString(1));           //取出这一行数据   }

7、USES-A:依赖关系,A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为:A类方法中的参数包含了B类。

关联关系:A类会用到B类,这是一种强依赖关系,是长期的并非偶然。在代码中的表现为:A类的成员变量中含有B类。

HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。

IS-A:表示继承。父类与子类

组合关系:也是关联关系的一种特例,它体现一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。

8、JAVA的垃圾回收机制     java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。   9、在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过

10、构造函数不能被继承,只能被调用,构造方法只能被显式或隐式的调用。

11、浏览器的内置对象管理模型,简称BOM(Browser Object Model)中的Histroy属性和方法。     (1)length 返回浏览器历史列表中的URL数量。     (2) back() 加载 history列表中的前一个URL。     (3)forward() 加载  history  列表中的下一个URL。     (4)go()  加载history列表中的某个具体页面。

12、final修饰的方法,不允许被子类覆盖。     final修饰的类,不能被继承。     final修饰的变量,不能改变值。     final修饰的引用类型,不能再指向别的东西,但是可以改变其中的内容。

13、volatile      volatile用于限定变量只能从内存中读取,保证对所有线程而言,值都是一致的。但是volatile不能保证原子性,也就不能保证线程安全。      volatile关键字用在多线程同步中,可保证读取的可见性      JVM保证从主内存加载到线程工作内存的值是最新的      volatile能禁止进行指令重排序

14、java的访问权限有public、protected、private和default的,default不能修饰变量     普通变量不能用abstract修饰,abstract一般修饰方法和类

15、PreparedStatement与Statement     PreparedStatement比Statement执行效率更高     PreparedStatement会预编译SQL语句     Statement每次都会解析/编译SQL,确立并优化数据获取路径

16、方法名相同,参数类型相同      子类返回类型小于等于父类方法返回类型,     子类抛出异常小于等于父类方法抛出异常,     子类访问权限大于等于父类方法访问权限。 17、加载驱动方法     1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");     2. DriverManager.registerDriver(new com.mysql.jdbc.Driver());     3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");

18、Applet显示相关的方法主要有3个。     1. paint(Graphicsg)方法,具体执行Applet的绘制。     2. update(Graphicsg)()方法,主要用于更新Applet的显示。     3. repaint()方法,主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。

原文地址:https://www.cnblogs.com/xiaoshuangaaa/p/11317919.html

时间: 2024-07-30 21:59:52

Java零散知识2的相关文章

java 零散知识汇总(初级)

一.instanceof 运算符用法: instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. public class Temp2 { interface A { } static class B implements A { } static class C extends B { } public static void main(String[] args) { A a = null; B b = null; boolean res; Syste

java基础知识文章汇总

将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 java基础(三) 加强型for循环与Iterator java基础(四) java运算顺序的深入解析 java基础(五) String性质深入解析 java基础(六) switch语句的深入解析 java基础(七) java四种访问权限 java基础(八) 深入解析常量池与装拆箱机制 java

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

java基础知识回顾之java Thread类学习(六)--java多线程同步函数用的锁

1.验证同步函数使用的锁----普通方法使用的锁 思路:创建两个线程,同时操作同一个资源,还是用卖票的例子来验证.创建好两个线程t1,t2,t1线程走同步代码块操作tickets,t2,线程走同步函数封装的代码操作tickets,同步代码块中的锁我们可以指定.假设我们事先不知道同步函数用的是什么锁:如果在同步代码块中指定的某个锁(测试)和同步函数用的锁相同,就不会出现线程安全问题,如果锁不相同,就会发生线程安全问题. 看下面的代码:t1线程用的同步锁是obj,t2线程在操作同步函数的资源,假设不

【Thinking In Java零散笔记】对于持有对象一章中的显示系统环境变量代码分析

今天仍旧进行着学习java的计划.在学习到持有对象一章中,看到了如下代码: 1 import java.util.*; 2 3 public class EnvironmentVariables { 4 public static void main(String[] args) { 5 for(Map.Entry entry: System.getenv().entrySet()) { 6 System.out.println(entry.getKey() + ": " + 7 en

第1天:了解Java基础知识

Java的优势 1. 简单 不像C或者C++语言,Java中省去了对指针的操作.但是,Java中并没有省去指针,代替指针的是一种新的变量--引用,引用也是保存一个对象的内存地址. 2.方便 Java虚拟机自带垃圾回收器,能够自动回收内存资源.而C和C++语言,需要开发人员手动进行内存资源回收. 3.安全 不支持指针操作 4.平台无关性 Java语言是跨平台的,一次编译,到处运行. 而且,不同平台,C语言中数据类型所占的位数是不同的,而Java语言中,数据类型所占的位数是固定的. 5.面向对象 J

JAVA基础知识-java文化基础和运行环境

JAVA基础知识 1,java是95年sun公司推出的开发语言,发展很快,09年被oracle公司收购.至今分为SE.ME.EE三个发展方向和软件版本. 2,运行java的环境主要是通过JVM(java virtual machine)实现的.首先编写.java结尾的源文件,通过编译器编译成.class结尾的字节码文件,然后通过解释器实现在不同平台上一致运行的效果. 3,jvm,jre和jdk的区别:jvm,java虚拟机:jre,java运行环境,jdk:java开发工具包. 4,jdk的下载

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程