java牛客题目知识点记录

1,switch case 语句中的case后没有break时,会穿透执行到最后。

2,初始化顺序:父类静态成员变量、静态块>子类静态成员变量、 静态块>父类普通成员变量、非静态块>父类构造函数>子类 普通成员变量、非静态块>子类构造函数。

3,(1).程序从入口main方法进行加载。

      (2).静态域分为静态变量,静态方法,静态块。当执行到静态域时,按照静态域的顺序加载。并且静态域只在类的第一次加载时执行。

      (3).每次new对象时,会执行一次构造块和构造方法,构造块总是在构造方法前执行(当然,第一次new时,会先执行静态域,静态域〉构造块〉构造方法)

4, mysql 无rownum, 可结合limit实现其功能。

5,

1).request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2).response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3).session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4).out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5).page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6).application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7).exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8).pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
9).config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

6,int i = 0; int a = i++; int b = ++a; int c = a+b; int d = (a == 1)?b:c;  结果: a = 1 b= 1  c = 2 d =1  

7, 以下输出 : 1 3 2 

 1 public class B
 2 {
 3     public static void main(String[] args)
 4     {
 5           System.out.println(test());
 6     }
 7     private static int test() {
 8         int temp = 1;
 9         try {
10             System.out.println(temp);
11             return ++temp;
12         } catch (Exception e) {
13             System.out.println(temp);
14             return ++temp;
15         } finally {
16             ++temp;
17             System.out.println(temp);
18         }
19     }
20 }

8,math.round()函数,无论正数或者负数或者负数,运算规则相同,都是在给出数值的基础上+0.5,然后向下取整。

9, 队列先进先出, 栈先进后出。

10,常用的servlet包的名称是 javax.servlet   javax.servlet.http

11,javac将源程序编译成.class文件 , 如javac HelloWorld.java,运行javac命令后,如果成功编译没有错误的话,会出现一个HelloWorld.class的文件。java 可以运行class字节码文件。 如 java HelloWorld。注意java命令后面不要加.class

12,内存的存放:

常量池:未经 new 的常量
堆区:成员变量的引用,new 出来的变量
栈区:局部变量的引用
13,byte类型的变量在做运算时被会转换为int类型的值,+=会自动强转(自动装箱功能),但是+必须要手动强转。
14, java的八大基本数据类型:byte short int long double float boolean char
15, sql 的 stuff():删除指定长度的字符,并在指定的起点处插入另一组字符。
例:SELECT STUFF('abcdef', 2, 3, 'ijklmn')  → aijklmnef
16, as只用于mysql语言中,as可以为列或者表起别名,as可以省略,但是要用空格代替
17,初始化子类时必先初始化父类,子类构造方法隐式调用父类无参构造方法,若父类没有无参的构造方法,则在子类构造方法的第一行用supper()显式调用父类的有参构造方法,否则编译错误。
18,javac.exe是编译.java文件    java.exe是执行编译好的.class文件 javadoc.exe是生成Java说明文档  jdb.exe是Java调试器   javaprof.exe是剖析工具
19,Java异常都继承自类Throwable,Throwable子类有Error和Exception,其中Exception又分为运行时异常和编译时异常。编译时异常是未雨绸缪性质的异常,是防范,需要显示处理。运行时异常是程序员问题造成,并不强制进行显示处理。
20,>>为带符号右移,右移后左边的空位被填充为符号位,  >>>为不带符号右移,右移后左边的空位被填充为0,  没有<<< 因为<<后右边总是补0.
21,HashMap可以用null值和空字符串作为K,不过只能有一个
22,父类型引用指向子类型对象,无法调用只在子类型里定义的方法.
23,Java中静态变量只能在类主体中定义,不能在方法中定义。 静态变量属于类所有而不属于方法.
24,JAVA中的char是Unicode编码,字母一个字节占位符一位,汉字两个字节,同样占位符一位,两个字母就两个占位符了,所以不能存两个字母
25,①ASCII 只有127个字符,表示英文字母的大小写、数字和一些符号,但由于其他语言用ASCII 编码表示字节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2312编码格式,相同的,其他国家的语言也有属于自己的编码格式
②由于每个国家的语言都有属于自己的编码格式,在多语言编辑文本中会出现乱码,这样Unicode应运而生,Unicode就是将这些语言统一到一套编码格式中,通常两个字节表示一个字符,而ASCII是一个字节表示一个字符,这样如果你编译的文本是全英文的,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
➂为了解决上述问题,又出现了把Unicode编码转化为“可变长编码”UTF-8编码,UTF-8编码将Unicode字符按数字大小编码为1-6个字节,英文字母被编码成一个字节,常用汉字被编码成三个字节,如果你编译的文本是纯英文的,那么用UTF-8就会非常节省空间,并且ASCII码也是UTF-8的一部分
④搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:(1) 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。(2)用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
26,javac -d 指定放置生成的类文件的位置   javac -s 指定放置生成的源文件的位置
27,Statement对象用于执行不带参数的简单SQL语句。Prepared Statement 对象用于执行预编译SQL语句。Callable Statement对象用于执行对存储过程的调用。
28,Map接口有两个经典的实现分别是 Hashtable 和 Hashmap。
Hashtable 线程安全,不支持key和value为空,key不能重复,但value可以重复,不支持key和value为null。
Hashmap 非线程安全,支持key和value为空,key不能重复,但value可以重复,支持key和value为null。
29,
StringBuffer s = new StringBuffer(x);  x为初始化容量长度   s.append("Y"); "Y"表示长度为y的字符串
①.当y<x时,值为x
以下情况,容器容量需要扩展
②.当x<y<2*x+2时,值为 2*x+2
➂.当y>2*x+2时,值为y
 
30,Collection是java.util下的接口,它是各种集合结构的父接口, collections是java.util下的类,它包含有关各种集合类的静态方法。
31,synchronized 关键字:用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。
volatile关键字: 用来确保将变量的更新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。
serialize关键字:Java 对象序列化为二进制文件。
static关键字:修饰的变量为静态变量,静态变量属于某个类,而不是某个对象。它的副本只有一个(在类中只加载一次)。静态方法只能调用静态方法和静态变量。非静态方法可以调用静态方法和静态变量。静态方法中不能使用this和supper关键字。静态代码块用来给静态成员变量初始化。
32,字符流:reader writer  字节流:inputstream outputstream
33,如果try,finally语句里均有return,忽略try的return,而使用finally的return。二维数组定义,一维长度必须定义,二维可以后续定义。
34,JSP 共有以下 6 种基本动作:
jsp:include:在页面被请求的时候引入一个文件;
jsp:useBean:寻找或者实例化一个JavaBean。;
jsp:setProperty:设置 JavaBean 的属性。;
jsp:getProperty:输出某个 JavaBean 的属性;
jsp:forward:把请求转到一个新的页面;
jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。
35,方法重载的注意点:在同一个类中,方法名相同,形参列表不同(类型,个数,类型不同时的顺序),返回值类型和访问修饰符不参与比较。
36,原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败(由DBMS的事务管理子系统来实现);
一致性:事务前后的数据完整性要保持一致(由DBMS的完整性子系统执行测试任务);
隔离性:多个用户的事务之间不要相互影响,要相互隔离(由DBMS的并发控制子系统实现);
持久性:一个事务一旦提交,那么它对数据库产生的影响就是永久的不可逆的,如果后面再回滚或者出异常,都不会影响已提交的事务(由DBMS的恢复管理子系统实现的)
37,oracle 删除表时,提示cannot drop table userinfo because other objects depend on it,是创建表与删除表不是同一用户所致,用drop table xxx   cascade命令即可。
38, SQL中round函数为四舍五入取值,truncate为单纯截取数位
 39, String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间;StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
 
posted @ 2022-03-02 17:56  人鬼情未了  阅读(62)  评论(0编辑  收藏  举报