JavaSe学习日记

2023-11-16

前言

How to study?

  • 需求
    1. 工作需要
    2. 跳槽,对方需要
    3. 技术控
  • 看看传统技术能否解决
    1. 能解决,不完美
    2. 解决不了
    3. 问清楚新技术到底有什么优异
  • 引出我们学习的新技术和知识点
  • 学习新技术或者知识点的基本原理和基本语法(先不要考虑细节)
  • 快速入门(基本程序,curd)
  • 开始研究技术的注意事项,使用细节,使用规范,如何优化(人话:推倒重来)

JAVA诞生故事

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0G1gJPU5-1678672773976)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712172429817.png)]

  • 震惊世界的功能:在网页上加载动态的图片
  • LTS版本:long term support,长期支持版
  • 目前最广泛使用JAVA8、JAVA11

JAVA技术平台体系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aaPqzpC3-1678672773978)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712172924460.png)]

  • 目标:贯通标准版,学会企业版

JAVA重要特点

  1. JAVA语言是面向对象的(oop)

  2. JAVA语言是见状的。JAVA的强类型机制、异常处理、垃圾的自动手机是JAVA程序健壮性的重要保证

  3. JAVA是跨平台性质的。【.class文件通过解释器可在多个系统下运行】

  4. JAVA语言是解释型的[了解]

    解释性语言:JavaScript,PHP,Java

    编译型语言:c、c++

    区别:解释性语言,编译后的代码不能被机器直接执行,需要解释器来执行,编译型语言,编译后的代码已经是二进制码可以直接被机器直接运行

JAVA运行概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HNPNHfBw-1678672773979)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712174645511.png)]

JVM:Java虚拟机,实现在不同系统解释统一代码

JAAVA运行机制以及运行过程

  • JAVA核心机制-JAVA虚拟机[JVM java virtual machine]
  • 基本介绍
    1. JVM是一个虚拟计算器,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中
    2. 对于不同平台,有不同的虚拟机
    3. JAVA虚拟机机制屏蔽了底层运行平台的差别,实现了”一次编译,到处运行“(hhh还没有解释)

JDK基本介绍

  1. JDK全称:JAVA Development Kit [java开发工具包]
  2. JDK = JRE + java的开发工具[java,javac,javadoc,javap等]

JRE基本介绍

  1. JRE(JAVA Runtime Envirnment JAVA运行环境)

    JRE = JVM + JAVA的核心类库【类】

  2. 包括Java虚拟机和JAVA程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可

执行流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUhn2VCT-1678672773980)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193421703.png)]

什么是编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fAhqugD5-1678672773982)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193511933.png)]

什么是运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ct08jOP-1678672773983)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193641270.png)]

JAVA开发注意事项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7MA3Z3S6-1678672773985)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712193746905.png)]

8.Public类的名称需要与源文件名称相同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMu97UHe-1678672773986)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712194121604.png)]

每一个类编译后,都对应一个.class(JVM是加载机制,加载每个类)

安装JAVA

配置环境变量PATH

  1. 进入环境变量
  2. 增加JAVA_HOME环境变量,只想jdk安装目录d:\xxxx
  3. 编辑path环境变量,增加%JAVA_HOME%\bin
  4. 打开DOS命令行,任意目录下敲入javac/java,javadoc。如果出现java的参数则配置成功

Javadoc注释

一.Java注释方式

Java 支持三种注释方式。分别是

  1. 单号注释 //

  2. 多行注释 /* */

  3. 文档注释,它以 /** 开始,以 */结束。

    可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中。

二.JavaDoc注释用法

在开始的 /**之后,第一行或几行是关于类、变量和方法的主要描述。之后,你可以包含一个或多个各种各样的 @ 标签每一个 @ 标签必须在一个新行的开始或者在一行的开始紧跟星号(*).

  • 多个相同类型的标签应该放成一组。例如,如果你有三个 @see 标签,可以将它们一个接一个的放在一起。

下面是一个类的说明注释的实例:

/*** 这个类绘制一个条形图
* @author runoob
* @version 1.2
*/

三.JavaDoc注释会输出什么

javadoc 工具将你 Java 程序的源代码作为输入,输出一些包含你程序注释的HTML文件。

每一个类的信息将在独自的HTML文件里。javadoc 也可以输出继承的树形结构和索引。

由于 javadoc 的实现不同,工作也可能不同,你需要检查你的 Java 开发系统的版本等细节,选择合适的 Javadoc 版本。

四.JavaDoc注释常用标签

1.@see
  • 使用@see时应注意 写在每行注释的开头。
  • 用法:@see 类#属性 / 方法
.JavaDoc注释常用标签
1.@see
使用@see时应注意 写在每行注释的开头。
用法:@see 类#属性 / 方法	

JavaDoc注解中的{@link}与@see,他可以链接类或者方法,方便自己或别人看的时候,可以直接找到你关联的代码类或者啥的。

在编辑器中,按住ctrl+鼠标左键,就能直接跳转

2.{@link}
  • {@link}的使用与@see有一点区别就是可以写在注释的任意位置
  • 用法:{@link 类#属性 / 方法}
/**
 * {@link ClassA#属性}
 * {@link ClassA#方法}
 * {@link com.joh.demo.ClassB#方法}
 * 
 * 可不用开头写 {@link ClassA#属性}
 * 可不用开头写 {@link ClassA#方法}
 * 可不用开头写 {@link com.joh.demo.ClassB#方法}
 */

JavaDoc注解中的{@link}与@see,他可以链接类或者方法,方便自己或别人看的时候,可以直接找到你关联的代码类或者啥的。

在编辑器中,按住ctrl+鼠标左键,就能直接跳转

3.其他JavaDoc标签
标签 描述 示例
@author 标识一个类的作者 @author description
@deprecated 指名一个过期的类或成员 @deprecated description
{@docRoot} 指明当前文档根目录的路径 Directory Path
@exception 标志一个类抛出的异常 @exception exception-name explanation
{@inheritDoc} 从直接父类继承的注释 Inherits a comment from the immediate surperclass.
{@link} 插入一个到另一个方法或者代码的链接,但是该链接显示链接样式 Inserts an in-line link to another topic.
{@linkplain} 插入一个到另一个方法或者代码的链接,但是该链接显示纯文本字体 Inserts an in-line link to another topic.
@param 说明一个方法的参数 @param parameter-name explanation
@return 说明返回值类型 @return explanation
@serial 说明一个序列化属性 @serial description
@serialData 说明通过writeObject( ) 和 writeExternal( )方法写的数据 @serialData description
@serialField 说明一个ObjectStreamField组件 @serialField name type description
@throws 和 @exception标签一样.,说明要抛出的异常 @throws tag has the same meaning as the @exception tag.
{@value} 显示常量的值,该常量必须是static属性。 Displays the value of a constant, which must be a static field.
@version 指定类的版本 @version info

五.更多详细

(29条消息) 【Java基础】JavaDoc注释标签大全_墩墩分墩的博客-CSDN博客_java注释标签

Java代码规范

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNjavjSM-1678672773988)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712235502004.png)]

JAVA API文档

  1. API(Application Programming Interface,应用程序编程接口)是JAVA提供的基本编程接口(java提供的类还有相关方法)。
    中文在线文档:https://www.matools.com

  2. Java语言提供了大量基础类,因此Oracle公司也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类李包含的方法。

  3. Java类的组织形式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JTic2UV9-1678672773989)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713141610471.png)]

  4. 举例说明如何使用ArrayList类有哪些方法

    • 找方法:包 -> 类 -> 方法(如math)
    • 通过索引找(math)

标识符命名规则和规范

规则:必须要做
规范:最好这样做

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h59lHSlo-1678672773990)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220715200504867.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5C8uDAN-1678672773991)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220715200807421.png)]

基础

HelloWorld,JAVA

//1.public class hello表示hello是一个类,是一个public公有的类
//2.hello{ }表示一个类的开始和结束
//3.public static void main(string[]args)表示一个主方法,即程序入口
public class Hello {
    //编写一个主方法
    public static void main(String[] args){
        System.out.println("hello,world_JAVA");
    }
}

转义字符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PgskIzwi-1678672773993)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220712200215383.png)]

public class ChangeChar{
    public static void main(String[] args){
        System.out.println("北京\t上海\t换行\n 符号\\ 一个\" 一个\' 回车\r回车完毕");
        //解读
        //1.输出 回车
        //2.\r表示回车
        //3.将后面的字符一个个替换成前面的字符
    }
}

class Homework{
    public static void main(String[] args){
        System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000");
    }
}

”+“号运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S74iIkO6-1678672773994)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713113144123.png)]

JAVA数据类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dhn7Modn-1678672773995)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713113427422.png)]

整数类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ddNvjOh0-1678672773996)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713114432925.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t99WbG11-1678672773997)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713122822166.png)]

浮点类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abX8fry9-1678672773998)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713140553571.png)]

字符类型

  • 使用unicode码进行转义,char占2个字节
  • 字符类型“+”号运算不是拼串而是进行加法运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XEu4XD9q-1678672774000)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713151322638.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FPKSrFc1-1678672774001)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713152512264.png)]

布尔类型

细节说明

  • 不可以0或非0的整数代替false和true,这点和c语言不同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v8HXGI3U-1678672774002)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713154829300.png)]

基本数据类型的转换

自动类型转换

简介

当java程序在进行赋值或者运算时,精度小的类型回自动转换为精度大的数据类型
这个就是自动类型转换**(注意是精度噢)**

数据类型按精度(容量)大小排序如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCZ5hly3-1678672774003)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713182119602.png)]

例子:

int a='c';//对
double d=80;//对

需要注意的地方:

  1. 有多种类型的数据混合运算时,系统首先自动将数据转换成容量最大的那种数据类型,然后计算。
  2. 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
  3. (byte,short)和char之间不会进行转换。
  4. byte,short,char他们三者可以计算,在计算时首先转换为int类型(因此只能用来赋值等)
  5. boolean不参与转换
  6. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
  7. 整型直接量在没有加后缀的时候默认为int,但是当它被赋值给某个变量(这个变量是short型,int型,byte型中的一种)时,则会自动转化成相对应的类型。
强制类型转换

介绍:

自动类型转换的逆过程,将精度大的数据类型转换为精度小的数据类型。使用时要加上强制转换符(int/byte/float/…),但可能造成精度降低或溢出,格外要注意。

案例演示:

public class ForceConvert {
    public static void main(String[] args){
        int n1 = (int)1.9;
        System.out.println("n1="+n1);//造成精度损失
        //输出n1=1
        int n2 = 2000;
        byte b1 = (byte)n2;
        System.out.println("b1="+b1);//造成数据溢出
        //输出b1=-48
    }
}

需要注意的细节:

  1. 当进行数据的精度从大—>小,就需要使用强制转换

  2. 强转换符号只针对最近的操作数有效,玩玩会使用小括号提升优先级

    public class ForceConvertDetail {
        public static void main(String[] args){
            //演示强制类型转换
            //强转符号只针对最近的操作数有效,往往回使用小括号提升优先级
            // int x = (int)10 * 3.5 + 6 * 1.5;
            //double -> int 错误,强制转换()只对10有效
    
            int y = (int)(10 * 3.5 + 6 * 1.5);
            //使用小括号提升优先级计算进行强制转换
            System.out.println(y);
        }
    }
    
  3. char类型可以保存int类型的常量值,但不能保存int的变量值,需要强转

    char c1=100;//ok
    int m=100;//ok
    char c2 = m;//false
    char c3 = (char)m;//ok
    System.out.println(c3);
    
  4. byte和short,char类型在进行运算时,当作int类型处理。

基本数据类型和String类型转换

  • 介绍

    在程序开发中,我们经常需要将基本数据类型转换成String类型。或者将String类型转换成基本数据类型。

  • 基本数据类型转String类型

    语法:将基本类型的值+""即可

    演示:image-20220713204455990

  • String类型转基本数据类型

    语法:通过基本类型的包装类调用parseXX方法即可

    演示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NrbYR63y-1678672774005)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220713204437534.png)]

    注意:Char转换则使用ch.charAt(0)取出其中一个字符

  • 注意事项:

    1. 在将String类型转换成基本数据类型时,要确保String类型能够转成有效的数据,比如:我们可以把“123”,转成一个整数,但不能把“hello”转换成一个整数
    2. 如果格式不正确,就会抛出异常,程序就会终止,这个问题在异常处理章节中,会讲解

运算符

介绍

运算符是一种特殊符号,用来表示数据的运算、赋值和比较等…

  1. 算术运算符
  2. 赋值运算符
  3. 关系运算符
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

算术运算符

除法
public class ArithmeticOperator {
    public static void main(String[] args){
        System.out.println(10/4);//从数学角度来讲是2.5,java运算结果是2
        System.out.println(10.0/4);//java运算结果是2.5
        double d = 10 / 4;//java钟10 / 4 = 2,2=>2.0
        System.out.println(d);//结果是2.0
    }
}
模运算

%的本质,公式:a % b = a - a / b * b
-10 % 3 = -10 - (-10)/3 * 3 = -10 - (-3) * 3 = -10 + 9 = -1

public class ArithmeticOperator {
    public static void main(String[] args){
        System.out.println(10 % 3);//1
        System.out.println(-10 % 3);//-1
        System.out.println(10 % -3);//
    }
}
自增自减

作为表达式使用
前++:++i先自增后赋值
后++:i++先赋值后自增

此外还有**等

image-20220715192553948
面试题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PLr328cK-1678672774006)(C:\Users\ADMIN\AppData\Roaming\Typora\typora-user-images\image-20220715193140160.png)]

//原理如下
int i = 1;
k = i++;
/*
内部规则:
temp = i;
i = i + 1;
k = temp;									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaSe学习日记 的相关文章

随机推荐

  • jQuery选择器集锦(读《锋利的jQuery(第二版)》所摘)

    jQuery选择器分为基本选择器 层次选择器 过滤选择器和表单选择器 过滤选择器可以分为基本过滤 内容过滤 可见性过滤 属性过滤 子元素过滤和表单对象属性过滤选择器 input not myClass 选取class不是myClass的
  • linux 判断目录是否存在并创建

    1 用 int access const char pathname int mode 判断有没有此文件或目录 它区别不出这是文件还是目录 2 用 int stat const char file name struct stat buf
  • 计算机网络模型

    计算机网络OSI模型 Open Systems Interconnection model 是一种概念模型 它表征并标准化电信或计算系统的通信功能 而不考虑其基础内部结构和技术 其目标是多种通信系统与标准协议的互操作性 该模型将通信系统划分
  • Java从FTP下载文件到本地前端+后端

    一 前端 1 首先创建下载文件按钮
  • Android IdentityCredential(身份凭证)二

    IC TA代码调试 static const uint8 t hbkTest 16 0 hbkReal需要对接到具体系统中的API 该密钥需要具备每台设备唯一的特性 而且每次开机都需要保持不变 static const uint8 t hb
  • Latex的基本使用

    本文目录 一 Latex文档的基本结构 1 1 latex文档的两个部分 1 2 导言区 1 3 正文区 1 4 数学模式和文本模式 二 Latex中中文的处理办法 2 1 第一种方式 引入ctex宏包 2 2 第2种方式 使用ctexar
  • 获取屏幕分辨率

    获取屏幕宽度 window screen width window devicePixelRatio 获取屏幕高度 window screen height window devicePixelRatio
  • FBI紧急警告:黑客利用开源SonarQube实例窃取政府和企业源代码

    聚焦源代码安全 网罗国内外最新资讯 编译 奇安信代码卫士团队 美国联邦调查局 FBI 发布紧急警告称 黑客正在通过暴露在互联网且不安全的 SonarQube 实例中窃取美国政府和企业的信息 SonarQube 是一款开源的自动化代码质量审计
  • Servlet 405的可能原因

    初学Servlet 网页访问405 原因 没有删除自动生成的super sevice req resp 将其删除即可
  • 文本聚类(一)—— LDA 主题模型

    目录 文本聚类 一 LDA 主题模型 1 1 加载数据集 1 2 数据清洗 分词 1 3 构建词典 语料向量化表示 1 4 构建 LDA 模型 1 5 模型的保存 加载以及预测 1 6 小结 Update log 2021 07 08 主要
  • 使用PLC-Recorder快速连接PLC记录数据

    一 快速获取软件 PLC Recorder是一款优秀的国产PLC故障记录及数据采集软件 相较昂贵的国外软件 即使免费试用版本 已基本能满足工控 维护一族工程师们使用了 下面介绍一下获取方法 首先 可以在官网上下载此软件 点击软件下载的第一项
  • [技术发展-14]:高级研修班-智能制造-智能制造技术体系与发展状况

    目录 作者主页 https blog csdn net HiWangWenBing 文章出处 https blog csdn net HiWangWenBing article details 118251237 第1章 智能制造是历史发展
  • python常见异常类型&异常处理

    python常见异常类型 异常处理 常见异常类型 ZeroDivisionError 除 或取模 零 IndexError 序列中没有此索引 KeyError 映射中没有这个键 NameError 未声明 初始化对象 SyntaxError
  • chatgpt赋能python:如何让Python程序运行

    如何让Python程序运行 Python是一种高级编程语言 它被广泛应用于各种不同的领域 包括Web开发 数据分析 机器学习 人工智能等等 当你编写Python程序时 你需要学习如何让它们在你的计算机上运行 在本文中 我们将介绍如何让Pyt
  • ajax请求不能下载文件

    最近在做文件下载 后台写了个控制层 直接走进去应该就可以下载文件 各种文件图片 excel等 但是起初老是下载失败 并且弹出下面的乱码 前台请求代码 fileexcel unbind click bind click function al
  • 【随笔】年轻人的存款多少取决于个人或家庭的消费观

    近日 有调查称 大概五分之一的年轻人存款在一万元以内 10万元存款是一个 坎 存款超过10万就会超过53 7 的人 年轻人 存款 两个词碰撞在一起 引来了广泛的关注和讨论 你认为年轻人存款难吗 可以从以下几个角度发表你的看法 目录 一 灵魂
  • 脑机接口BCI技术概述

    脑机接口BCI技术概述 前言 一 脑机接口BCI是什么 二 BCI的框架 1 信号采集 2 信号处理 2 1 预处理 2 2 特征提取 2 3 模式分类 3 BCI应用 三 脑控系统中常用的BCI范式 1 基于感觉运动节律的BCI 2 基于
  • v-text的用法

    v text指令 相当于原生js中的innerText 用于将数据填充到标签中 作用于插值表达式类似 但是没有闪动问题 如果数据中有HTML标签会将html标签一并输出 注意 此处为单向绑定 数据对象上的值改变 插值会发生变化 但是当插值发
  • 安卓智能手机开发,打地鼠实例(登录页面+游戏界面+课程设计)

    主要为大家详细介绍了Android实现打地鼠小游戏 文中示例代码介绍的非常详细 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 文件 url80 ctfile com f 25127180 743379579 b297fb p 55168
  • JavaSe学习日记

    前言 How to study 需求 工作需要 跳槽 对方需要 技术控 看看传统技术能否解决 能解决 不完美 解决不了 问清楚新技术到底有什么优异 引出我们学习的新技术和知识点 学习新技术或者知识点的基本原理和基本语法 先不要考虑细节 快速
Powered by Hwhale