最近过的好吗,Java简要复习及进阶知识它来了,像考试周一样霸道!
发布时间:2023年12月25日
Java
CMD
%% 可视化界面的鼻祖是施乐,在当时是颠覆性的存在,因为省去了麻烦的cmd命令。
- 可视化界面的缺点:
- 额外加载很多的图片,消耗很多内存
- 运行速度没有命令行快
- 如果我们要经常使用一个文件,重复打开会很麻烦,我们只需要把它的路径记录在电脑的环境变量中即可++到目前为止,我没成功++
- 步骤:我的电脑、右键属性、高级系统设置、高级—环境变量,编辑系统变量Path
操作
javac.exe
用于编译,java.exe
用于执行。这两个工具位于bin
中,在cmd中使用。
javac 名字.java
编译,形成.class的字节码文件
javac
是JDK提供的编译工具- cmd访问
java
代码文件之上的文件夹,再编译该文件夹下的java文件
java 名字
多c多后缀,没c没后缀
- 在文件夹中上面的路径换成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 specialization
和Code 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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!