首页 > 编程语言 >Java_基础总结

Java_基础总结

时间:2023-01-09 11:25:23浏览次数:69  
标签:总结 Java 变量 子类 修饰符 基础 线程 修饰 方法

总结。

 


 

一、运行环境

  jdk:开发工具包

  jre:运行时环境

  jvm:虚拟机

编译:

  使用javac,将.java源文件编译为.class文件。

运行:

  使用java,运行.class文件。


二、标识符

标识符用来给类、变量、方法起名字,可以使用字母数字下划线、美元符号。

  字符不止是英文字母。

  不能以数字开头。


三、类

类是对现实世界具体事务的抽象。

格式:

修饰符 class 类名{
    //变量
    修饰符  变量名;

    //构造器
   修饰符 类名(){
   
   }

    //方法
    修饰符  返回值类型   方法名(参数){

    }
}

修饰符:

  1、访问修饰符:

    public,公开的,所有类可以访问。

    protected,受保护的,子类可以访问。

    default,默认修饰符,同一包下的子类可以访问。

    private,私有的,只有当前类可以访问。

  2、非访问修饰符:

    package,包声明:

      在源文件中非注释的第一行,说明此类属于哪个包。

    import,导入:引入外部的类。

    import static,导入类的静态属性。

    static,静态修饰符,修饰的变量和方法存在方法区中:

      修饰变量时,变量为静态变量,从属于类,不依赖对象存在,可直接使用,局部变量不能被修饰为静态变量。

      修饰方法时,方法为静态方法,从属于类,不依赖对象存在,可直接使用,静态方法不能使用类的非静态变量。

    final,最终的:

      修饰变量时,变量不可修改,为常量,要求变量名全大写,字母以下划线分开。

      修饰方法时,方法不可被重写。

      修饰类时,类不可被继承。

    abstract ,抽象的:

      修饰类时,类为抽象类,不能实例化对象。

      修饰方法时,规定方法的返回值类型和参数类型,待子类来实现。

    synchronized,同步的:

      修饰方法时,为同步方法,此方法同一时间只能被一个线程访问。

      修饰语句块时,为同步块,此语句块同一时间只能被一个线程访问。

构造器:

  •   无返回类型(返回类型为类的实例)。
  •   通过new调用。
  •   手动定义后,不会自动生成无参构造器。
  •   构造方法执行时,会先执行super()调用父类构造器。

四、数据类型

1、基本数据类型:

  数字类型:

     整型:byte(1字节)、shot(2字节)、int(4字节,默认)、long(8字节)

     浮点型:float(4字节)、double(8字节,默认)

  字符类型:char(2字节)

  布尔类型:boolean(1位)

2、引用数据类型(4字节):

  数组、对象、接口。

3、类型自动转换:

  byte、short、char——》int。

  表达式中有long,结果为long。

  表达式中有double,结果为double


 

五、变量类型

1、局部变量:

  从属于方法或语句块,不会自动初始化。

2、成员变量:

  从属于对象,会自动初始化:0、0.0、false、\u0000、null。

3、静态变量:

  从属于类,会自动初始化。


六、运算符

赋值:=

算术:+、-、*、/、%

关系:>、<、>=、<=、==、!=

逻辑:&&(短路)、||(短路)、!、&(不短路)、|(不短路)

位运算:&、|、<<、>>。(左移一位:乘以2;右移一位:除以2。)简单取反操作

扩展:++、--、+=、-=、*=、/=

三目运算:表达式?返回值1:返回值2;


七、控制语句

1、顺序,正常代码由上往下执行。

2、选择:

  if

  if....else

  if....if else....if else .....else

 

  switch(int或者枚举表达式){
    case  值1:

    ...

    case  值2:

    ...

    default:

    ...

  }

3、循环

  while

  do  while

  for

4、结束

  continue,结束本次循环。

  break,结束循环语句。


八、封装、继承、多态

方法重载(overload):

  两同:同一个类,同一个方法名。

  三不同:(参数列表)不同类型、个数、顺序。

方法重写(override):

  子类重写父类的方法。

  要求:

    方法名一致

    子类访问修饰符权限大于等于父类的

    子类返回值小于等于父类的

    子类异常声明类型小于等于父类的。

1、封装(Encapsulation):

  使用访问修饰对属性方法进行封装。要求“高内聚、低耦合”。

2、继承(extends):

  代码重用。

  对现实世界更加准确的建模。

  所有类都是Object类的子类。

3、多态(polymorphic):

  存在多个子类继承。

  存在方法的重写。

  父类引用指向子类对象。


九、抽象类、接口

抽象类:

  使用abstract声明的类,存在待实现的抽象方法(待子类重写的方法)。

接口:

  1、一个类可以实现多个接口。

  2、接口可以继承多个接口。

常用接口:

  可序列化:Serializable

  可克隆:Cloneable

  多线程:Runnable

  排序规则:Comparable


十、内存机制

1、栈:

  存放局部变量。

  储存空间空间连续,快。

  不可被多个线程共享。

2、堆:

  存放对象。

  储存空间不连续、灵活。

  可被多个线程共享。

3、方法区:

  存放类的信息:代码、静态变量、常量...

  储存空间不连续、灵活。

  可被多个线程共享。

       类的加载过程


十一、垃圾回收

Java是自动回收垃圾的。

可以通过System.gc()方法向系统建议回收垃圾。

可以通过finalize()方法释放非Java 资源。如打开的文件资源、数据库连接,或是调用非Java方法(native方法)时分配的内存(比如C语言的malloc()系列函数)。


十二、异常机制

1、捕获异常:try catch finally

2、抛出异常:thows

3、手动抛出异常:throw

4、自定义异常:extends Exception


十三、数组

概念:

长度固定。

元素类型一致。

通过下标引用。

数组也是对象,元素的初始化与成员变量一致。

多维数组:元素是数组。

初始化:

  动态初始化:先定义,然后一个一个赋值。

  静态初始化:例子:int[] a={1,2,3,4,5};

  默认初始化:int[] a = new int[5];

工具类:

  Arrays,包括了对数组的常用操作,排序、查找。


十四、容器

常用容器总结

 


十五、常用类

包装类:

  Boolean、Character、Byte、Short、Integer、Long、Float、Double

  实现基本数据类型与引用数据类型的转换。

  自动装箱、自动拆箱。

字符串类:

  String,不可变字符串。

  StringBuilder,可变字符串,线程不安全。

  StringBuffer,可变字符串,线程安全。

     String被称为不可变字符串的原因

 

时间类:

  Date,使用时间戳来抽象时间。

  DataFormat,字符串与Date对象互转。

  Calendar,日期进行计算。

       时间对象的有关操作

 

文件类:

  File,抽象一个文件或文件夹。

       计算文件或文件夹大小

 

数学类:

  Math,常用的数学计算的函数。

枚举类:

  常用来定义一组常数,避免使用其高级特性(使用普通类即可)。

  枚举的使用

 


十六、IO流

常用IO流

 


十七、多线程

创建:

  多线程的几种创建方式

 

状态:

  1、new

  2、就绪

  3、运行

  4、阻塞:

    sleep,不释放锁。

    join,等待另一个线程结束。

    wait,会释放锁。

       synchronized,等锁。

  5、终止:建议使用boolean变量来使线程正常终止。

优先级:

  1-10,默认5。

死锁:

  不要同时持有多个对象的锁。

多线程总结

 


十八、网络编程

基于socket编程。

URL:

  网络资源定位符。

  通过openStream可以获得数据流。

TCP:

  面向连接的,安全稳定。

UDP:

  不面向连接的,高效的。

IP、端口、URL

使用TCP协议进行通信的基本流程

使用UDP协议进行通信的基本流程

 

标签:总结,Java,变量,子类,修饰符,基础,线程,修饰,方法
From: https://www.cnblogs.com/lurenjia-bky/p/17036445.html

相关文章

  • 03 JavaScript
    JavaScriptECMAScript和JavaScript的关系1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECM......
  • (四)Java异常
    Java异常1、运行时异常运行时异常都是RuntimeException子类异常NullPointerException-空指针异常ClassCastException-类转换异常IndexOutOfBoundsExcepti......
  • [总结]2023-1-7B组模拟赛
    [总结]2023-1-7B组模拟赛P0前言感觉比赛状态回来了,但是思维还没上来。P1心路历程又是先全部看题。T1有点奇怪,没有多想。T2看到数据感觉有70pts的\(n^2\)dp。T3准备......
  • 2021年最新版Docker常见面试题整理总结带答案
    2021年最新版Docker常见面试题整理总结带答案全部面试题答案,更新日期:01月30日,直接下载吧!下载链接:高清500+份面试题资料及电子书,累计10000+页大厂面试题PDFDocker题......
  • 2022年度总结 2023年度规划
    2022年计划1、完善爬虫项目;......
  • JavaScript 性能优化
    1.内存管理内存管理介绍内存:由可读写单元组成,表示一片可操作空间管理:人为的去操作一片空间的申请、使用和释放内存管理:开发者主动申请空间、使用空间、释放空......
  • c#基础之——接口
    1  [serializable]序列化,一般用于载入json文件,model中的一个class(model)这时候类其实就相当于一个数据类型,可以存储从jeson文件中提取出来的各个信息。model之间的子类,mod......
  • Java方法
    方法System.out.println();//是什么吗?//系统类+对象+方法Java方法是一对语句的集合,他们一起负责执行一个功能方法是解决一类问题的步骤的有序组合方法包含于......
  • Engineering Fundamentals Checklist(微软软件工程基础检查表)
    微软的软件工程基础检查表对于了解大公司的工作流程有一定的帮助。(翻译自)[https://microsoft.github.io/code-with-engineering-playbook/ENG-FUNDAMENTALS-CHECKLIST/......
  • 2023.1-09 python基础
    列表常用方法append增加一个元素a.append('aaaa')extend增加多个a.extend([1,2,3,4,5,6])index检索,个人理解类似于findprint(a.index("is"))inset指定位置插入......