【夯实Java基础】(一)Java入门时的知识你还记得吗?

简介: 【夯实Java基础】(一)Java入门时的知识你还记得吗?

文章目录


java,javac,javadoc,jar命令区别

JVM虚拟机

Java基础编译原理

Java跨平台原理

Java程序注释

Java编码规范 开发工具

API 应用程序接口

变量和数据类型

选择结构

循环结构

什么是装箱?什么是拆箱?

数据结构


java,javac,javadoc,jar命令区别


  • java 通知虚拟机运行一个.class文件


  • javac编译 用来把.java文件编译为.class文件


  • javadoc命令是用来生成自己API文档的它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同时形成程序的开发文档了。


  • jar是随 JDK 安装的,在 JDK 安装目录下的 bin文件夹下是用来打包的,有许多具体的参数,通常JAR文件是一种压缩文件,并且与常见的Zip文件兼容。


JVM虚拟机


.java文件使用javac编译成.class文件

.class文件可以运行在多个操作系统对应的jvm

虚拟机jvm基于操作系统给不同的操作系统配置对应的运行环境。


环境变量:


JAVA_HOME:方便找安装目录

CLASSPATH:lib目录下的dt.jar,lib.jar,rt.jar

path:bin;jre\bin


image.png


Java基础编译原理


java语言的"编译期"分为前端编译和后端编译两个阶段。前端编译是指把*.java文件转变成*.class文件的过程;后端编译(JIT, Just In Time Compiler)是指把字节码转变成机器码的过程。


在编译原理中, 将源代码编译成机器码, 主要经过下面几个步骤:


image.png


Java跨平台原理


java是一种一种跨平台语言,能够实现一次编译,到处运行,其中java的跨平台性主要是依靠JVM实现的。


注意:java是跨平台的,但是JVM不是跨平台的


我们编译好java源程序之后,要想在不同的操作系统上运行,只需安装相应的JVM即可。Java程序通过JVM 才具有跨平台的特性,但JVM本身并不是跨平台的。也就是说,不同操作系统的JVM是不同的,Windows平台的JVM不能用在Linux中,反之亦然。


简而言之,也就是说,不同的平台本身有着不同的JVM,是JVM成就了Java的跨平台特性。


Java程序注释


在Java注释中基本包括单行注释多行注释。


  • 单行注释:使用“//”开头,在后面添加文字注释。
  • 多行注释:使用“/”开头以“/”结尾。
  • 文档注释:使用“/**”开头,以“*/”结束。也是多行注释。


编写注释的原因:用以说明某段代码的作用,便于程序员阅读,便于代码的后期维护和升级。


Java编码规范 开发工具


Java编码规范问题可以参考以下这篇博客


《阿里java开发手册》


API 应用程序接口


API(Application Programming Interface),应用程序编程接口。


Java API是一本程序员的字典 ,Java API是JDK中提供给我们使用的类。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。


API的使用步骤:


  1. 打开帮助文档。
  2. 点击显示,找到索引,看到输入框。
  3. 你要找谁?在输入框里输入,然后回车。
  4. 看包。java.lang下的类不需要导包,其他需要。
  5. 看类的解释和说明。
  6. 学习构造方法。
  7. 使用成员方法。


变量和数据类型


十进制和二进制:0和1

22      byte     0001 0110


-22     byte     0001 0001 0110


-22     int      0001 0000 0000 0000 0000 0000 0000 0001 0110


符号:- 符号位


数据类型:


  • 整形:int 32、short 16、byte 8 、long a=10L; 64
  • 浮点型:double 2048 、float f=1.0f; 1024
  • 字符型:char 8位:0 ~ 9 , a ~ z , A ~ Z 0:48 a:97 A:65
  • 布尔型:boolean 1位
  • java引用类型:String array Math Random Scanner
  • 自定义类型:Student{}


存储不同:基本数据类型存储在栈中,值来源于常量池。

引用数据类型存储在堆栈中,值来源于常量池、对象、方法区中。


栈中基本数据存为值,引用数据类型存为地址

参数传递过程中,基本类型传值,引用类型传址。


类型转换:


  • double a=10; / / 隐式类型转换 小转大
  • short s=10;
  • short s1 = (short) (s+1); / / 强制类型转换 大转小
  • List list = new ArrayList(); / / 子类对象引用父类类型


选择结构


switch(java8可以放字符串) 不支持long类型


循环结构


增强 for 和 普通 for 的区别


增强for只能在遍历的时候使用


普通for可增删改查,效率最高


什么是装箱?什么是拆箱?


1、什么是装箱?什么是拆箱?


装箱:基本类型转变为包装器类型的过程。

拆箱:包装器类型转变为基本类型的过程。


2、装箱和拆箱的执行过程?


装箱是通过调用包装器类的 valueOf 方法实现的

拆箱是通过调用包装器类的 xxxValue 方法实现的,xxx代表对应的基本数据类型。

如int装箱的时候自动调用Integer的valueOf(int)方法;Integer拆箱的时候自动调用Integer的intValue方法。


3、常见问题?


整型的包装类 valueOf 方法返回对象时,在常用的取值范围内,会返回缓存对象。

浮点型的包装类 valueOf 方法返回新的对象。

布尔型的包装类 valueOf 方法 Boolean类的静态常量 TRUE | FALSE。


数据结构


初窥数据结构可以参考这里!


Collection:集合


数组:


数据结构为线性表,对应指针映射生成下标

如果是在长度内的增:在末尾增,效率最高;在首位增,效率最低。

查询效率较高,改动方便。


尾部增(数组扩容)逻辑实现:


  • 新建数组:由原本长度扩展为长度+增加的元素个数,把数据依次填入
  • 新数组对象接收 Arrays.copyOf(原数组,新长度),把新增数据填入


其他位增:


  1. 插入位置前的数据:新数组对象接收Arrays.copyOf(原数组,新长度)从插入位修改新增数据,把剩余的数据依次修改新数组
  2. 元素位移:新数组从末尾开始到插入位结束,要把所有元素依次后移然后再插入(不会产生新的对象,代码实现复杂)


ArrayList:arrList对象

增:arrList.add(下标,数组)
初始值为10,当内容超出0.75的时候,默认创建预留空间0.5倍 long的最大值-8
防止数组越界


泛型:目的是保证集合中数据类型的统一

E  element 元素
T 反之所有的Java类型
K 键
V 值


LinkedList:数据结构链式表

增删快,查询和修改很慢
<元素,前,后> <元素,前,后>
LinkedList至少需要3份空间


HashSet:去重

如何实现去重,add(obj) 方法调用的是map.put(obj,xxx)
把值作为map的key存储,因为key的hash值一定,所以不会出现重复
遍历的时候只有增强for和迭代器
没有get(i)方法 无法以下标删除元素 没有修改方法
LinkedHashSet 用链表的形式 有序且不重复


HashMap:

Entry
<key,value>
HashMap 遍历:拆分成keyset来遍历key 用collection 遍历(ArrayList)value
HashMap 底层数据量过大 
HashMap 扩容阈值
HashMap 负载因子


IO流:数据结构为队列


目录
相关文章
|
3天前
|
Java 测试技术 数据库
【JAVA基础篇教学】第十七篇:Java单元测试
【JAVA基础篇教学】第十七篇:Java单元测试
|
3天前
|
Java 索引
【JAVA基础篇教学】第七篇:Java异常类型说明
【JAVA基础篇教学】第七篇:Java异常类型说明
|
1天前
|
Java
Java中int[]与Integer[]相互转化的方法,java基础知识面试重点总结
Java中int[]与Integer[]相互转化的方法,java基础知识面试重点总结
|
1天前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
2天前
|
算法 Java Python
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
|
3天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
12 0
|
3天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
10 0
|
3天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
3天前
|
XML Java 数据库连接
【JAVA基础篇教学】第十五篇:Java中Spring详解说明
【JAVA基础篇教学】第十五篇:Java中Spring详解说明
|
3天前
|
设计模式 Java
【JAVA基础篇教学】第十四篇:Java中设计模式
【JAVA基础篇教学】第十四篇:Java中设计模式