狂神说Java---java学习笔记(图片有些问题,有时间将图片从电脑上传上来)

Posted ying-hack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了狂神说Java---java学习笔记(图片有些问题,有时间将图片从电脑上传上来)相关的知识,希望对你有一定的参考价值。

视频地址

!!!视频地址

Markdown学习

标题

一级标题 :# + 空格 + 标题

二级标题 :## + 空格 + 标题

六级标题:###### + 空格 + 标题

字体

hello world

粗体:**hello world**

hello world

斜体:*hello world

hello world

加粗斜体:***hello world***

hello world

删除线:~~hello world~~

引用

选择阅读ying的博客,走向人生的巅峰

引用:> 选择阅读ying的博客,走向人生的巅峰

分割线


分割线:---


分割线:***

图片

![图片的名字](图片的地址(可以是本地的地址也可以是互联网的地址))

超链接

点击跳转到百度

列表

有序列表

  1. A
  2. B
  3. C
  4. D
1. + 空格 + 内容
2. + 空格 + 内容
3. + 空格 + 内容
4. + 空格 + 内容

无序列表

  • A
  • B
  • C
- + 空格 + 内容
- + 空格 + 内容
- + 空格 + 内容

表格

名字姓别年龄
张三19
名字|姓别|年龄

--|--|--

张三|男|19

进入源代码将空格删去

或者直接右键插入表格

代码

print("hello world")
```python
print("hello world")
```

发布markdown语法博客

将上边的markdown的源码直接复制到csdn上或者其他支持markdown方法的网站上就可以了

什么是计算机

介绍

  1. Computer:电子计算机俗称电脑
  2. 能够按照程序运行,自动,高速处理海量数据的现代化只能电子设备
  3. 由硬件和软件组成
  4. 常见的形式:台式计算机,笔记本计算机,大型计算机
  5. 广泛应用在各种领域

计算机硬件

一些物理装置按系统要求构成一个有机整体为计算机软件运行提供物质基础

计算机硬件的组成:

  • CPU
  • 主板
  • 内存
  • 电源
  • 主机箱
  • 硬盘
  • 显卡
  • 键盘,鼠标
  • 显示器

装机

最简单的计算机可以由:

  • CPU
  • Memory(内存)
  • Motherboard(主板)
  • IO设备

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-15VF6Ymz-1628614588378)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210806014753463.png)]

冯诺依曼体系结构(计算机之父)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IzYAeNQU-1628614588379)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210806014919598.png)]

计算机软件

  1. 计算机软件可以使计算机按照事先预定好的顺序完成特定的功能

  2. 计算机软件按照其功能划分为系统软件和应用软件

  3. 系统软件:

    • DOS,Windows,Linux,Unix
  4. 应用软件:

    • WPS,QQ,微信
  5. 软件,开发,软件开发

  6. 人机交互

电脑常用快捷键

Alt + F4关闭窗口

Enter确定

Num开启小键盘的使用

CapsLock开启大小写

Ctrl + s保存

Ctrl + c复制

Ctrl + v粘贴

Ctrl + z撤销

Ctrl + x剪切

Dos命令

开启Dos命令

  1. 开始里的Windows系统下的命令提示符
  2. Win键 + R 输入cmd打开控制台
  3. 在文件夹的路径下输入cmd可以在此目录下打开Dos命令

管理员方式打开

开始里的Windows系统下的命令提示符右键管理员打开

基础命令

`D:`   切换盘符
`dir`  查看当前目录下的所有文件
`cd`   切换目录
`cls`  清屏
`exit` 退出终端
`calc` 打开计算器
`mspaint`画图
`md 目录名`  创建文件夹
`rd 目录名`   移除文件
`cd> 文件名`  创建文件
`del 文件名`  删除文件

Java入门

Java帝国的诞生

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vg5EzduR-1628614588380)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809071720644.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NLbPdp3B-1628614588381)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809071949011.png)]

Java特性和优势

  • 简单性
  • 面向对象
  • 可移植性
  • 高性能
  • 分布式
  • 动态性
  • 多线程
  • 安全性
  • 健壮性

Java三大版本

  • JavaSE:标准版(桌面程序,控制台开发)
  • JavaME:嵌入式开发(手机,小家电)
  • JavaEE:E企业级开发(web端,服务器开发)

JDK,JRE,JVM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mli4zVbi-1628614588382)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809072916498.png)]

Java开发环境搭建

JDK下载与安装


卸载JDK

  1. 将jdk包删除
  2. 将JAVA_HOME删除
  3. 将path里面的java变量删除
  4. java -version查看是否删除

安装JDK8

  1. 百度搜索JDK8,找到下载地址
  2. 登录账户
  3. 下载电脑对应的版本
  4. 双击安装JDK
  5. 记住安装的路径
  6. 配置环境变量
    • 我的电脑–>属性–>高级系统设置–>环境变量
    • 系统变量–>新建
    • 添加键为JAVA_HOME 值为刚刚的jdk路径
    • 配置path变量 添加path值为 %JAVA_HOME%\\bin
    • 添加path变量 添加path值为 %JAVA_HOME%\\jre\\bin
  7. 检查安装情况
    • 打开cmd
    • 输入java -version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OTY6l6Ts-1628614588382)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809073331430.png)]

Hello World 及简单语法规则

  1. 随便新建一个文件夹,存放代码

  2. 新建一个java文件

    • 后缀名为.java
    • Hello.java
  3. 编写Hello.java文件内容

    public class Hello{
    	public static void main(String[] args){
    		System.out.println("Hello World");
    	}
    }
    
  4. 将java文件编译成字节码

    javac 文件名(带后缀名)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcqHnskT-1628614588383)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809075414299.png)]

  5. 运行class文件

    java 文件名(不带后缀名)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pMiZpNjj-1628614588384)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809075424144.png)]

可能遇到的问题

  1. 大小写不能出现问题,Java大小写敏感
  2. 尽量使用英文
  3. 文件名和类名必须一致,并且首字母大写
  4. 符号需要用英文

编译型和解释型

  1. 编译型

    将程序进行直接全部编译

    操作系统(速度快)

  2. 解释型

    执行什么就解释什么

    网页(不要求速度快)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toOwAMqj-1628614588385)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809080246248.png)]

IDEA安装

  • 什么是IDE介绍

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ozc5xDNi-1628614588387)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809080605889.png)]

安装IDEA

  1. 去官网搜索IDEA
  2. 下载
  3. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NnBJSOJO-1628614588387)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809081157967.png)]
  4. 一直下一步就可以了

简单使用

  1. 打开软件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JBkp2Q8f-1628614588388)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809081936875.png)]

  2. 新建项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2tLxxJM-1628614588388)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809082027261.png)]

  3. 在src下创建一个Java类

  4. 写Java代码

    // psvm生成 public static void main(String[] args)
    //sout生成 System.out.println();
    

Java基础语法


注释,标识符,关键字

注释

平时我们编写代码,在代码量比较少的时候可以看懂,但是项目结构一旦复杂起来,我们就需要用到注释了

注释并不会被执行,是给我们写代码的人看的

平时代码一定要注意规范

//为单行注释

/*为多行注释
123*/

/**
 * 文档注释
 */

标识符

Java所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8mzB96M-1628614588389)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809084806172.png)]

关键字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7b0hyHJM-1628614588389)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809084602840.png)]

数据类型

  • 强类型语言

    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
  • 弱类型语言

  • Java的数据类型分为两大类

    1. 基本类型
      • 整形
        • byte
        • sort
        • int
        • long
      • 字符
        • char
      • 布尔
        • boole
    2. 引用类型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ln4nEHWv-1628614588389)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809085307373.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AlcSkuMY-1628614588390)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809112033282.png)]

拓展

整数拓展:

进制

  • 十进制
    • 123456
  • 八进制(0)
    • 010
  • 十六进制(0x)
    • 0x11

浮点数拓展:

float 有限 离散 舍入误差 接近但不等于

//最好完全使用浮点数进行比较

可以用BigDecimal类进行精确的比较 数学工具类

public class Demo03 {
    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0/10;


        System.out.println(f);
        System.out.println(d);
        System.out.println(f==d);
        float d1 = 23232323232323f;
        float d2 = d1+1;
        System.out.println(d1==d2);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1N7e8Qnu-1628614588391)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809113245966.png)]

字符拓展

char c1 = 'a';
char c2 ='中';
System.out.println((int)c1);
System.out.println((int)c2);
//所有的字符本质还是数字
//编码 Unicode 2个字节
// \\u0061 ==> a
// \\t 制表符
// \\n 换行符

布尔值

boolean flag = true;
if(flag){}//老手
if(flag==true){}//新手
// Less is More! 代码要精简易读

类型转换

由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

强制转换===> 高 --> 低

自动转换===> 低 --> 高

范围
低----------------------------------------------->高
byte, short ,char -> int -> long -> float -> double

强制类型转换,转换的时候一定要注意范围

int i =128;
byte b =(byte)i;
System.out.println(i);
System.out.println(b);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nMvD2d40-1628614588392)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809115859216.png)]

自动转换

int i =128;
double b =i;
System.out.println(i);
System.out.println(b);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qQcWfKXV-1628614588392)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809120156887.png)]

char c = 'a';
int d = c+1;
System.out.println(d);
System.out.println((char)d);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bNjZ1F9z-1628614588393)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809120717691.png)]

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转化为不相干的类型
  3. 把高容量转换为低容量时,强制转换
  4. 转换的时候可能存在内存溢出,或者精度问题

注意

操作比较大的数的时候注意溢出问题

JDK7新特性,数字之间可以用下划线分割

int money = 10_0000_0000;
int years = 20;
int total = money*years;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qm6rvrYF-1628614588394)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809121038477.png)]

int money = 10_0000_0000;
int years = 20;
long total = (long)money*years;
System.out.println(total);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kV0020Kw-1628614588394)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809121203460.png)]

变量,常量

变量

命名规范
    所有变量,方法,类名:见名知意
    类成员变量:首字母小写和驼峰原则
    局部变量:首字母小写和驼峰原则
    常量:大写字母和下划线
    类名:首字母大写和驼峰原则
    方法名:首字母小写和驼峰原则

就是可以变化的量

Java是一种强类型的语言,每个变量都必须声明其类型。

Java变量是程序汇总最基本的存储单元,其要素包括变量名,变量类型和作用域

type varName [=value][{,varName[=value]}];
//数据类型 变量名 =值 可以使用逗号隔开来声明多个同类型变量。
  • 注意事项:
    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型
    • 变量名必须是合法的标识符、
    • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

变量作用域

  • 类变量

    添加个关键字static
    static double salary = 2500;
    从属于类
    生命周期为类的开始到类的结束
    
  • 实例变量

    处于类里面方法的外边
    实例变量:从属于对象,可以不用初始化。为数据类型的默认值 0 0.0 false
    
  • 局部变量

    处于方法里面
    生命周期为 方法的开始到方法的结束必须初始化
    

常量

常量:初始化后不可以变的值!不会变动的值

所谓常量可以理解为一种特殊的变量,它的值被设定后不可以被改变,在程序运行的过程中不允许被改变。

final 常量名 =final double PI = 3.14

常量名一般为大写字母

运算符

  • Java语言支持如下运算符

    • 算数运算符:+,-,*,/,%,++,–

    • 赋值运算符: =

    • 关系运算符: >,<,>=,<=,==,!=,instanceof

    • 逻辑运算符:&&,||,!

    • 位运算符:&,|,^,~,>>,<<,>>>

    • 条件运算符: ? :

      x ? y : z

      x为真返回y

      x为假返回z

    • 扩展赋值运算符:+=,-=,*=,/=

    • 幂运算2^3 Math.pow(2,3)

包机制

  • 为了更好的组织类,java提供了包机制,用于区别类名的命名空间

  • 包语句的语法格式为:

    package pkg1[. pkg2[. pkg3…]];

  • 一般利用红丝域名倒置作为包名

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句可以完成此功能

    import package1[.package2...].(classname|*)

JavaDoc

Javadoc命令是用来生成自己的API文档的

  • 参数信息

    /*
    @author 作者
    @version 版本号
    @since 指明需要最早使用的jdk版本
    @param 参数名
    @return 返回值情况
    @throws 异常抛出情况
     */
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Aidg7IU-1628614588395)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210809140659632.png)]

生成自己的API文档

  1. 在工具栏中找到 tool >> Generate JAVADoc…

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ml4iAVCq-1628614588396)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/20160910175638053)]

  1. 然后弹出配置窗口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KRKwAq2A-1628614588396)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/20160910175738836)]
参数说明
\\1. Whole project>>整个项目都生成
\\2. Custom scope>>自定义范围,如下:project files 项目文件,project production files 项目产品文件,project test files 项目的测试文件, 未知范围,class hierarchy 类层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYeg6mPB-1628614588397)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/20160910180409757)]
\\3. include test source 包含测试目录
\\4. include JDK and … 包含jdk和其他的第三方jar
\\5. link to JDK documentation…链接到JDK api
\\6. output directy 生成的文档存放的位置
\\7. private、package、protected、public 生成文档的级别(类和方法)
\\8. 右边的Generate…是选择生成的文档包含的内容,层级树、导航、索引…
\\9. 再右边是生成的文档包含的内容信息,作者版本等信息
\\10. Locale 语言类型,zh-CN
\\11. Other command line arguments 其他参数
\\12. Maximum heep… 最大堆栈

Java流程控制

用户交互Scanner

  • 之前我们学的基础语法中我们并没有实现程序和人的交互,但是Java给我们提供了一个工具类,我们可以获取用户的输入。Java.util.Scanner是Java5的新特性。我们可以通过Scanner类来获取用户的输入

  • 基本语法

    Scanner s = new Scanner(System.in);

  • 通过Scanner类的next与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器,用于接收键盘输入
        Scanner s =  new Scanner(System.in);
        //判断用户有没有输入字符串
        if (s.hasNext()){
            //使用next方式接收
            String str = s.next();
            System.out.println("您输入的东西为:"+str);
        }
    	s.close()
    }
}
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器,用于接收键盘输入
        Scanner s =  new Scanner(System.in);
        //判断用户有没有输入字符串
        if (s.hasNextLine()){
            //使用next方式接收
            String str = s.nextLine();
            System.out.println("您输入的东西为:"+str);
        }
        s.close();
    }
}
  • nest()
    • 一定要读取到有效字符后才可以结束输入
    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    • next()不能得到带有空格的字符串
  • nextLine()
    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
    • 可以获得空白

没有必要的话可以不用判断是否有输入

判断是否为xxx类型

例子:判断整数

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器,用于接收键盘输入
        Scanner scanner =  new Scanner(System.in);
        //从键盘接收数据
        int i = 0;
        float f =0.0f;
        System.out.println("请输入整数:");
        if(scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("整数数据:" + i);
        }else{
            System.out.println("输入的不是整数");
        }
        System.out.println("请输入小数:");
        if(scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("输入的小数为:" + f);
        }else{
            System.out.println("输入的不是小数");
        }
        scanner.close();
    }
}
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //输入多个数字求和,输入数字回车确定,输入非数字结束
        //创建一个扫描器,用于接收键盘输入
        Scanner scanner =  new Scanner(System.in);
        //f为接收输入的数,sum为求和,num为求输入了多少个数
        double f = 0;
        double sum = 0;
        int num = 0;
        while (scanner.hasNextDouble()){
            f = scanner.nextDouble();
            sum += f;
            num ++;
        }
        System.out.println("输入的平均数为:"+sum/num);
        scanner.close();
    }
}

顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺讯一句一句执行。

  • 顺序结构是最简单的算法结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQMdFKYi-1628614588398)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210810134450117.png)]

  • 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

选择结构

  • if单选择结构

    • 我们很多时候都要判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if使用

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ASWQYiNk-1628614588398)(Java%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.assets/image-20210810135758440.png)]

    • 语法

      if(布尔表达式){
      	//如果布尔表达式为真的时候需要执行的语句。
      }
      
    • //输入字符串是否等于Hello,如果等于则输出Hello不等于什么都不干。
      //字符串比较需要用equals,尽量不要用==
      import java.util.Scanner;
      public class Demo01 {
          public static void main(String[] args) {
              //创建一个扫描器,用于接收键盘输入
              Scanner scanner =  new Scanner(System.in);
              System.out.println("请输入内容:");
              String s = scanner.nextLine();
              //equals:判断字符串是否相等
              if(s.equals("Hello")){
                  System.out.println(s);
              }
              System.out.println("End");
              scanner.close();
          }
      }
      
  • if双选择结构