【牛客网java练习错题笔记】 --Java基础打卡day005

01 try括号里有return语句, finally执行顺序

01
return执行到中间的时候发现finally,则先不返回,把值暂存到本地栈,等finally运行之后,如果finally里有返回语句,那么以finally为主,否则才把本地栈里的返回值真的返回。

02 静态变量:

02
因为 i 是static的,是类属性,所以不管有多少对象,都共用的一个变量。

03 关于依赖注入,下列说法中错误的是()

03
依赖注入控制反转是同一概念:
依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源

04 for循环的执行次序:

04
for循环的执行顺序:1.先执行初始化条件,2.执行判断条件,3.如果满足2的条件,执行循环体中代码;4.执行foo(‘c’), 5.初始化条件不再执行,从2开始执行

05 在Web应用程序中,()负责将HTTP请求转换为HttpServletRequest对象

05
Apache就是一个Http服务器,Tomcat是一个web容器,静态的htmlApache还可以处理,但是动态的需要转发给Tomcat去处理了,比如jsp页面,请求先经由Apache转发给Tomcat再由Tomcat解析请求。所以应该是web容器去解析成request对象。

06 Java运行时内存分为线程共享和线程私有两部分,哪些属于线程共享部分?

06
共享的资源有:
由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)
全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的
静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的
文件等公用资源 这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。
独享的资源
栈是独享的
寄存器 这个可能会误解,因为电脑的寄存器是物理的,每个线程去取值难道不一样吗?其实线程里存放的是副本,包括程序计数器PC

07

07
Collection
-----List
-----LinkedList 非同步
----ArrayList 非同步,实现了可变大小的元素数组
----Vector 同步
------Stack
-----Set 不允许有相同的元素
Map
-----HashTable 同步,实现一个key--value映射的哈希表
-----HashMap 非同步
-----WeakHashMap 改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收

08 将main()方法给出的字节数组,将其显示到控制台:

08
out是java.lang.System类中的一个字段,out是“标准“”输出流,public static final PrintStream out
out是PrintStream类型,PrintStream是包装流,你传入什么,他就输出什么

09 volatile关键字

09

volatile到底做了什么

  • 禁止了指令重排
  • 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的
  • 不保证原子性(线程不安全)

10 程序的输出结果。

class Base
{
    public void method()
    {
        System.out.println("Base");
    } 
}
class Son extends Base
{
    public void method()
    {
        System.out.println("Son");
    }
     
    public void methodB()
    {
        System.out.println("SonB");
    }
}
public class Test01
{
    public static void main(String[] args)
    {
        Base base = new Son();
        base.method();
        base.methodB();
    }
}

编译不通过。
Base base=new Son();多态的表示形式。父类对象调用了子类创建了Son对象
base调用的method()方法就是调用了子类重写的method()方法
而此时base还是属于Base对象,base调用methodB()时Base对象里没有这个方法,所以编译不通过。
要想调用的话需要先通过SON son=(SON)base;强制转换,然后用son.methodB()调用就可以了。

10 结果集

10
1、PreparedStatement 继承 Statement , PreparedStatement 实例包含已编译的SQL 语句, 所以其执行速度要快于 Statement 对象。
2、作为Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法executeexecuteQueryexecuteUpdate 已被更改以使之不再需要参数
3. PreparedStatement尽最大可能提高性能. 最重要的一点是极大地提高了安全性.

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件柠檬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值