日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网刷题错题记录

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网刷题错题记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

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.靜態內部類

靜態內部類可以訪問外圍類的靜態數據,包括私有數據,但不能訪問非靜態數據;

非靜態內部類可以直接訪問外圍類的數據,包括私有數據

  • package test;
  • public class test {//外部類
  • int a = 1;
  • static int b = 9;
  • private String str = "test";
  • private static int c = 33;
  • class innerClass {//非靜態內部類
  • void method(){//可直接訪問外部類數據,包括靜態數據,私有數據
  • System.out.println(a);
  • System.out.println(b);
  • System.out.println(str);
  • System.out.println(c);
  • }
  • }
  • static class staticInnerClass {//靜態內部類
  • void method(){
  • System.out.println(a);//default訪問不了
  • System.out.println(b);//可以訪問靜態數據
  • System.out.println(c);//也可以訪問私有的靜態數據
  • System.out.println(str);//但是非靜態的訪問不了
  • }
  • }
  • }

  • 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.變量的存儲區

  • class A {
  • private String a = "aa";//類的成員變量
  • public boolean methodB() {
  • String b = "bb";//局部變量
  • final String c = "cc";//局部變量
  • return false;
  • }
  • }
    • 類中的成員變量,存放在堆區
      • 堆區:只存放類對象,線程共享;
    • 方法中的局部變量,存放在棧區
      • 棧區:存放方法局部變量,基本類型變量區、執行環境上下文、操作指令區,線程不共享;
      • 方法區:又叫靜態存儲區,存放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.

    總結

    以上是生活随笔為你收集整理的牛客网刷题错题记录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。