牛客网刷题错题记录

目录

Java

1.静态内部类

2.关于String,StringBuilder以及StringBuffer

3.java语言特性

4.非抽象类实现接口的问题

5.互斥锁

6. Socket 通信编程

7.类的初始化顺序

8.变量的存储区

9.jvm线程共享问题

10.java内存回收问题

11.关于java concurrent包四个类的区别

12.Statement在JDBC中相当于SQL语句的载体


Java

1.静态内部类

静态内部类可以访问外围类的静态数据,包括私有数据,但不能访问非静态数据;

非静态内部类可以直接访问外围类的数据,包括私有数据

  1. package test;
  2. public class test {//外部类
  3. int a = 1;
  4. static int b = 9;
  5. private String str = "test";
  6. private static int c = 33;
  7. class innerClass {//非静态内部类
  8. void method(){//可直接访问外部类数据,包括静态数据,私有数据
  9. System.out.println(a);
  10. System.out.println(b);
  11. System.out.println(str);
  12. System.out.println(c);
  13. }
  14. }
  15. static class staticInnerClass {//静态内部类
  16. void method(){
  17. System.out.println(a);//default访问不了
  18. System.out.println(b);//可以访问静态数据
  19. System.out.println(c);//也可以访问私有的静态数据
  20. System.out.println(str);//但是非静态的访问不了
  21. }
  22. }
  23. }

2.关于String,StringBuilder以及StringBuffer

  • 对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
    • java中的字符串存储在字符串常量区,不会改变,发生改变是会新创建一个对象
  • StringBuffer是线程安全的
  • StringBuilder是线程不安全的
  • 可以修改StringBuffer和StringBuilder的内容
    • StringBuilder和StringBuffer底层都是以字符数组存放的,可以修改内容

3.java语言特性

  • java致力于检查程序在编译和运行时的错误
  • java能运行虚拟机实现跨平台
  • java自己操作内存减少了内存出错的可能性
  • java还实现了真数组,避免了覆盖数据的可能性
    • ps:内存连续就是真数组,内存不连续就是假数组

4.非抽象类实现接口的问题

  • 非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头不一定一致
    • 方法名相同,参数类型相同
    • 子类返回类型小于等于父类方法返回类型
    • 子类抛出异常小于等于父类方法抛出异常
    • 子类访问权限大于等于父类方法访问权限

5.互斥锁

  • synchronized关键字是同步代码块关键字,对对象加互斥锁

   笔记:

  • final关键字在多线程中的作用表现为:1.创建过程保证不可给其他线程访问;2.构造函数退出时,final域的值对其他线程可见

6. Socket 通信编程

  • 服务端通过new ServerSocket()创建
  • 服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象
  • 客户端通过new Socket()方法创建通信的Socket对象

Socket套接字 

就是源Ip地址,目标IP地址,源端口号和目标端口号的组合

服务器端:ServerSocket提供的实例

ServerSocket server= new ServerSocket(端口号)

客户端:Socket提供的实例

Socket soc=new Socket(ip地址,端口号)


7.类的初始化顺序

  • 初始化父类中的静态成员变量和静态代码块
  • 初始化子类中的静态成员变量和静态代码块
  • 初始化父类中的普通成员变量和代码块,在执行父类中的构造方法
  • 初始化子类中的普通成员变量和代码块,在执行子类中的构造方法

8.变量的存储区

  1. class A {
  2. private String a = "aa";//类的成员变量
  3. public boolean methodB() {
  4. String b = "bb";//局部变量
  5. final String c = "cc";//局部变量
  6. return false;
  7. }
  8. }
  • 类中的成员变量,存放在堆区
    • 堆区:只存放类对象,线程共享;
  • 方法中的局部变量,存放在栈区
    • 栈区:存放方法局部变量,基本类型变量区、执行环境上下文、操作指令区,线程不共享;
    • 方法区:又叫静态存储区,存放class文件和静态数据,线程共享;

9.jvm线程共享问题

  • 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行 到了第几行,是线程隔离的
  • 原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
  • Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
  • 方法区:
    • 1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
    • 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

10.java内存回收问题

  • java的内存回收是自动的,Gc在后台运行,不需要用户手动操作
  • java中不允许使用指针
  • 内存回收线程可以释放无用的对象内存
  • 内存回收线程负责释放无用内存

11.关于java concurrent包四个类的区别

  • Semaphore:类,控制某个资源可被同时访问的个数(与并发编程的锁机制相关)
  • ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大(与并发编程的锁机制相关)
  • Future:接口,表示异步计算的结果(线程任务的返回结果的‘欠条’)
  • CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类(与并发编程的锁机制相关)

12.Statement在JDBC中相当于SQL语句的载体

  • Statement是最基本的用法,采用字符串拼接的方式,存在注入漏洞
  • PreparedStatement对Statement中的SQL语句进行预编译,同时检查合法性,效率高
  • CallableStatement接口扩展 PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持
  • BatchedStatement不是标准的Statement类

转载声明:https://blog.csdn.net/zzxzzxhao/article/details/82893167#1.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android Intent和IntentFilter

android的应用程序包含三种重要的组件:Activity、Service、BroadcastReceiver,应用程序采用一致的方式来启动他们——都是依靠Intent来进行启动。Intent就封装了程序想要启动的程序意图,不仅如此,Intent还可用于与被启动组件交换信…

冒泡排序的双重循环理解

主要说一下冒泡排序的一些关键地方的个人理解,比如算法思想,两个循环的作用意义,中间循环变量范围的确定等。 原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小…

全程软件测试之测试需求分析与计划(2)

2.3 测试工作量估算 在确定了测试需求、明确了测试范围之后,就需要明确测试任务,估算测试工作量。基于质量需求和测试的工作量、测试环境、产品发布的设想时间等要求,就可以确定测试进度和所需的测试资源,或者基于现有的测试资源…

C语言和Java 在用数组作为参数时有点不一样

C语言和Java 在用数组作为参数时有点不一样。 C中 void jh(int n[2]) {/注意这里参数是写了大小 int temp; temp n[0]; n[0] n[1]; n[1] temp; } int main() { int i; int num[2] {7, 8}; jh(num); } Java中 由于C和Java中定义数组形式稍微有点不一样,所以这里…

[CLR via C#]16. 数组

数组是允许将多个数据项当作一个集合来处理的机制。CLR支持一维数组、多维数组和交错数据(即由数组构成的数组)。所有数组类型都隐式地从System.Array抽象类派生,后者又派生自System.Object。这意味着数组始终是引用类型,是在托管堆上分配的。在你应用程…

Java中String类 compareTo()方法比较字符串详解

中心:String 是字符串,它的比较用compareTo方法,它从第一位开始比较, 如果遇到不同的字符,则马上返回这两个字符的ascii值差值.返回值是int类型1.当两个比较的字符串是英文且长度不等时,1)长度短的与长度长的字符一样,则返回的结果…

UIPopoverController简介

1, performSegueWithIdentifier:sender:跳转或弹出控制器 Identifier为popoverSegue时候,Sender仅限于UIBarbuttonItem与View;//。。。。。。。。。 转载于:https://www.cnblogs.com/senlinwuran/p/UIPopoverController.html

异常是catch还是throws的简单原则

1 .如果你完全能处理这个异常,那么就catch掉 public void test() {try {} catch (Exception e) {}}2. 如果你完全不能处理这个异常,那么就throws掉 public void test() throws Exception {}3. 如果你想对异常做一点点处理,但又不能完全处理&a…

在Windows 7 x64 上编译libsvn

这几天由于工作需要,需要Windows上Python 2.7 x64对应的svn模块。Win32版本可以从这个页面直接下载 http://sourceforge.net/projects/win32svnx64的无奈只有自己编译了。在这个过程中还是费了一些力气,在Linux上可以直接make,在Windows使用V…

程序员简历怎么写

说到程序员简历,这两个月,我看过不下10,000份简历。。。 答主不是HR,也不是技术负责人,但是在网站的运营工作中,每天最开心的事情就是研究候选人的简历了~~ 这些人中,有BAT的资深大牛程序员,也有…

android之修改CheckBox左侧图标样式

很多时候系统自带的CheckBox样式并不能满足我们的需求,本文讲解如何替换CheckBox选中,未选中状态下的左侧图片背景的替换。 1.在res目录下创建drawable文件夹,在drawable创建my_checkbox.xml文件 my_checkbox.xml文件内容如下: &l…

步步高DVD机DV603的U盘模式支持视频格式

亲测支持视频格式:支持avi,mpg,vob文件 转载于:https://www.cnblogs.com/phyking/p/4456602.html

SSM框架学习整理

一、Spring原理: 1:核心技术 Spring的两大技术要点便是,一个AOP(面向切面编程),一个IOC(控制反转),而AOP是什么呢,就好比从c语言面向过程编程—>java面向对象编程—>Spring面向切面编程…

安卓手机关闭底部键盘灯的方法(htc G11亲测有效)

还在因为看电子书和看电影时键盘灯刺眼而苦恼吗?下面提供一个方法关闭键盘灯,让你轻松DIY!1、手机必须先Root。使用RE管理器,按照这个路径,找到文件:brightnesssys/devices/platform/leds-pm8058/leds/butt…

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程,这次刚刚好基于自…

java基础知识 多线程

package org.base.practise9; import org.junit.Test; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * Created with IntelliJ IDEA. * User: cutter.li * Date: 14-3-11 * Time: 上午9:40 * 多线程基础知识练习 */ public class Pract…

最新版的SSM框架spring5.0搭建教程(附源码)

<p>用SSM框架已经有一段时间了&#xff0c;但都没有完整地搭建过一次工程。前段时间比较有时间就自己试着搭建了一下&#xff0c;差不多都是用的最新的spring版本了&#xff0c;然后就在这个基础上做了很多的实验测试。最近想着还是记录一下整个搭建的过程&#xff0c;以…

node.js 针对不同的请求路径(url) 做出不同的响应

边看这个边写的: http://wenku.baidu.com/link?urlC4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM0Ji59WBPSkoEXPTWk8dPIZVpbFg_by_gN6DJNGYfjlFuYxE_ 上篇文章讲到了浏览器中访问 http://127.0.0.1:8888/ 输出 "hello world", 但是实际当中, 用户访…

MyBatis 为什么需要通用 Mapper ?

版权声明&#xff1a;版权归博主所有&#xff0c;转载请带上本文链接&#xff01;联系方式&#xff1a;abel533gmail.com https://blog.csdn.net/isea533/article/details/83045335 </div>在早期项目文档中有过类似主题的内容…

Oracle教程-安装、结构(一)

本文安装的是Oracle中的11G版本一、 将文件win32_11gR2_database_1of2.zip和win32_11gR2_database_2of2.zip解压。注意&#xff1a;这两个文件解压到同一个目录下&#xff0c;即&#xff1a;将Components目录合并到一起二、 双击“setup.exe”&#xff0c;弹出以下安装向导。去…