最近过的好吗,Java简要复习及进阶知识它来了,像考试周一样霸道!

发布时间:2023年12月25日

Java

CMD

%% 可视化界面的鼻祖是施乐,在当时是颠覆性的存在,因为省去了麻烦的cmd命令。

  • 可视化界面的缺点:
    • 额外加载很多的图片,消耗很多内存
    • 运行速度没有命令行快
  • 如果我们要经常使用一个文件,重复打开会很麻烦,我们只需要把它的路径记录在电脑的环境变量中即可++到目前为止,我没成功++
  • 步骤:我的电脑、右键属性、高级系统设置、高级—环境变量,编辑系统变量Path

操作

  • javac.exe用于编译,java.exe用于执行。这两个工具位于bin中,在cmd中使用。
    • javac 名字.java编译,形成.class的字节码文件
      • javacJDK提供的编译工具
      • cmd访问java代码文件之上的文件夹,再编译该文件夹下的java文件
    • java 名字多c多后缀,没c没后缀
      • 也是JDK提供的工具
    • 在文件夹中上面的路径换成cmd再回车,cmd中的路径自动为该文档下的路径,方便了很多

IDEA

  • 项目结构包括:project项目、module模块、package包、class
  • JRE包括虚拟机和核心类库java.lang,JDK包括JRE和开发工具::其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等::

基础知识

访问修饰运算符:

  • private : 在同一个类内可见使用对象:变量、方法。 注意:不能修饰类(外部类)
  • 多了一种default,也就是什么也不写的缺省访问,在同一个包内可见!!!
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 ++范围是要大于default的,缺省是以同包为默认范围++
  • public : 对所有类可见。使用对象:类、接口、变量、方法

分隔符

  • 空格、逗号、分号、结束符都被称为分隔符
  • . 原点 用来将软件包的名字与它的子包或类分隔。也用来将引用变量与变量或方法分隔

转义字符

  • \b:退格
  • \f:换页,将当前位置移到下一页开头
  • \r:回车,注意是回车,不是换行,回车是将当前位置移到本行开头
  • \t水平制表

循环语句

  • for each循环,也称加强型循环,能在不使用下标的情况下遍历整个数组,格式如下:
    `` for(type element:array{sout;}

跳转语句

  • 一共三种:break/continue/return
  • return之前没怎么讲过,其实就是可以从一个方法返回,并把控制权交给调用它的语句。直接结束整个方法

变量

  • 静态变量(类变量):存储在方法区中的静态区
  • 成员变量(实例变量):存储在堆内存!!!
  • 局部变量:存储在栈内存!!!::当方法调用完或者语句结束之后自动释放::
  • 变量的使用原则:就近原则。现在局部范围内找,如果没有,就在成员位置中找++也就是说,成员函数寻找变量时先在函数范围内寻找,再去类中寻找++

常量

  • 常量不同于常量值,常量可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。++常量对应的地位是变量,常量值对应的是变量值++
  • 强类型指的是程序(https://baike.baidu.com/item/%E7%A8%8B%E5%BA%8F/13831935?fromModule=lemma_inlink)中表达的任何对象所从属的类型都必须能在编译(https://baike.baidu.com/item/%E7%BC%96%E8%AF%91/1258343?fromModule=lemma_inlink)时刻确定。
    • 常见的强类型语言有Java(https://baike.baidu.com/item/Java/85979?fromModule=lemma_inlink)、Apex(https://baike.baidu.com/item/Apex?fromModule=lemma_inlink)和Python(https://baike.baidu.com/item/Python?fromModule=lemma_inlink)等。强类型语言(https://baike.baidu.com/item/%E5%BC%BA%E7%B1%BB%E5%9E%8B%E8%AF%AD%E8%A8%80/9563849?fromModule=lemma_inlink)在大规模信息系统(https://baike.baidu.com/item/%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F/222253?fromModule=lemma_inlink)开发中具有巨大优势
    • 这种强类型针对于类型检查的严格程度,它指任何变量在程序的运行过程中只能存储这个类型的数据。++因此,对于强类型语言,一个变量不经过强制转换,它永远是这个数据类型++
  • Java定义常量居然是final而不是const,惊了!
    • 用final修饰引用类型的常量时,final只保证引用地址不变,不能保证引用地址的内容不变
    • 也就是说final的作用和常指针char *const p是一样的,只能对某个固定位置进行读写操作
    • 补充:指向常量的指针const char *p对于任意位置进行只读操作,::不能改变指向的内容,但是可以改变指向::

引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组([])

进阶知识

反射

  • Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。
  • ++当我们输入一个对象或者类并调用它的属性和方法时,一按 (“.”)点号,编译器就会自动列出她的属性或方法,这里就会用到反射++

语法糖

  • 语法糖就是对现有语法的一个封装简而言之,语法糖让程序更加简洁,有更高的可读性
  • 语法糖的存在主要是方便开发人员使用。但是,**Java虚拟机并不支持这些语法糖。**这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。++所以语法糖只存在于编译器,在.java到.class时进行解语法糖的步骤++
  • 各种糖块:
    • switch支持String与枚举:本质上是利用equals()hashCode()方法实现,比较的是字符串的哈希值++哈希值可能会碰撞,该糖块效率略低,但可以接受++
    • 泛型和类型擦除:
      • 通常情况下,一个编译器处理泛型有两种方式:Code specializationCode sharing,java使用后者,c++使用前者
      • Code sharing方式为每个泛型类型创建唯一的字节码表示,并且将该泛型类型的实例都映射到这个唯一的字节码表示上,该步骤通过类型擦除实现
    • 自动装箱与拆箱:自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱++实际上就是调用对象的一些方法完成对int变量的作用++
    • *可变参数(variable arguments)*是在Java 1.5中引入的一个特性。它允许一个方法把任意数量的值作为参数,等到调用方法的时候我们先将可变参数转化为数组,将该数组作为参数传递到被调用的方法中
文章来源:https://blog.csdn.net/qq_65052774/article/details/135051854
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。