Java基础知识

Java核心基础

一. Java语言简介

1. 语言简介

a. 什么是语言
语言指的是人与人之间进行沟通, 交互的载体, 方式.
b. 什么是计算机语言
计算机语言指的是人与计算机之间进行交互的方式.
c. 计算机语言的分类
机器语言
  • 简单理解: 由二进制0, 1这样的指令组成.
    例如: 10010表示 加法.
汇编语言
  • 简单理解: 用一些简单的字母表示二进制序列(0, 1)
    例如: add表示 加法.
    优点: 文件小, 执行速度快, 可以直接操作计算机的硬件.
    弊端: 可读性和可移植性相对较差, 对程序员来讲, 门槛较高.
高级语言
  • 简单理解: 由一些纯英文字母(包含大小写) 和 一些特殊符号组成.
    例如: +表示 加法.
    优点: 语法相对简单, 可读性, 兼容性较强, 对程序员来讲, 门槛较低.
    弊端: 种类繁多, 每种语言都有自己的语法, 每学一门语言, 都要学习新的语法.
四代语言的分类
  • 第一代高级语言:
    例如: C语言, 以面向过程为编程思想, 唯一一门可以直接操作计算机硬件的高级语言.
  • 第二代高级语言:
    例如: C++, 以面向对象为编程思想, 没有默认的垃圾回收机制.
  • 第三代高级语言: 目前市场上应用最多的语言
    例如: Java, C#, 以面向对象为编程思想, 而且有默认的垃圾回收机制(GC).
  • 第四代高级语言: 未来的发展趋势, 现在还处于发展初期
    简单理解: 以面向问题编程思想为主, 也就是说: 告诉计算机做什么, 而不是怎么做.
    例如: Siri语言交互,SQL, 大数据云平台, 这些势必肯定会用到大数据框架等技术.

2. JAVA语言简介

a. 为什么要学习Java
  • Java使用广泛, 且简单易学.
  • Java是一门强类型的语言.
  • Java有非常完善的异常处理机制.
  • Java提供了对于大数据的基础性支持(mr分布式计算框架,spark,flink,javaAPI开发redis,提供对外接口).
b. Java概述
  • Sun公司(Stanford University NetWork: 美国的斯坦福大学)在1995年推出的高级编程语言.
  • Java之父: 詹姆斯·高斯林(James Gosling).
  • Sun公司在2009年被甲骨文(Oracle)公司给收购了.
c. Java平台版本
  • J2SE: 标准版, 也是其他两个版本的基础. 在JDK1.5的时候正式更名为: JavaSE. Swing
  • J2ME: 小型版, 一般用来研发嵌入式程序. 已经被Android替代了. 在JDK1.5的时候正式更名为:JavaME.
  • J2EE: 企业版, 一般开发企业级互联网程序. 在JDK1.5的时候正式更名为: JavaEE. B/S 浏览器/服务器
d. Java特点
  • 开源
    指的是Java源代码是开放的.
  • 跨平台
    指的是: 用Java代码编写的程序, 可以在不同的操作系统上运行.
    原理: 由JVM保证Java程序的跨平台性, 但是JVM本身并不能跨平台.
  • 多态 接口
  • 多线程
  • 面向对象

二. JDK和JRE

1. 概述

  • JDK: Java开发工具包(Java Development Kit), 包含开发工具 和 JRE.
    –常用的开发工具: javac, java
  • JRE: Java运行时环境(Java Runtime Environment), 包含运行Java程序时所需的核心类库和 JVM.
    –核心类库: java.lang, java.util, java.io
    JVM: Java虚拟机(Java Virtual Machine)
    –作用: 用来保证Java程序跨平台性的, 但是JVM本身并不能跨平台.

2. 图解

image-20210714183754988

3. Java环境搭建

A. JDK的下载
B. JDK的安装
  • 1.傻瓜式安装(下一步下一步就可以了)
  • 2.安装路径(以后但凡是安装开发软件, 都要满足以下两点: )
    •不要直接安装到盘符目录下.
    •安装路径最好不要出现中文, 空格等特殊符号.
  • 3.目录解释:
    •bin: 存放的是编译器和工具
    •db: 存储数据
    •include: 编译本地方法.
    •jre: Java运行时文件
    •lib: 存放类库文件
    •src.zip: 存放源代码的.
C. JDK的卸载
  • 去控制面板直接卸载就可以了.
    小技巧: windows徽标键 + 字母R -> control -> 然后敲回车, 这样可以直接打开控制面板.

三. PATH环境变量配置

1. 目的

  • 让我们可以在任意目录下都能使用JDK提供的常用开发工具, 例如: javac, java

2. 步骤

  • a.新建一个系统变量: JAVA_HOME, 它的值就是你安装的JDK的路径(注意: 不要带bin这一级)
  • b.在path中配置你刚才设置好的JAVA_HOME环境变量.
    • 格式: %JAVA_HOME%\bin
    • 解释: %JAVAHOME%表示引入该系统变量的值, 即: C:\Program Files\Java\jdk1.8.0_241
  • c.测试
    • 方式一: 在DOS窗口中输入"javac 或者 java", 能看到对应的一坨指令即可.
    • 方式二: 在DOS窗口中输入"java -version", 可以看到当前配置的JDK的版本.

四. 第一个Java程序HelloWorld

Java程序的开发步骤一共3步, 分别是:

  • 编写

  • 编译

  • 执行

  • 1. 编写源代码

    • a.在D:\code文件夹中创建HelloWorld.java文件.
    • b.用记事本打开HelloWorld.java文件.
    • c.在HelloWorld.java文件中编写如下内容:
    public class HelloWorld {
    	public static void main(String[] args) {
    	System.out.println("Hello World!");
    	System.out.println("你好, 世界!");
    	}
    }
    
  • 2. 编译

    • 通过javac指令将HelloWorld.java文件编译成HelloWorld.class字节码文件.
      格式
      //在DOS窗口中输入如下内容:javac HelloWorld.java
  • 3. 执行

    • 通过java指令, 让计算机执行HelloWorld.class字节码文件.
      格式
      //在DOS窗口中输入如下内容:java HelloWorld
      注意: 直接写文件名即可, 不需要写文件后缀名, 即: .class

五. 常用的Java开发工具

1. 概述

  • 开发工具指的就是我们用来编写代码的软件.

2. 分类

常用的主要有以下几类:
  • windows操作系统自带的记事本.
    缺点: 没有行号, 关键字不能高亮显示, 代码不能折叠.

  • 高级记事本(Notepad++, Editplus)
    优点: 有行号, 关键字能高亮显示, 代码能折叠.
    缺点: 不方便我们调试, 不适合开发大型项目.

  • 集成开发工具(IDE)
    集成开发工具指的是集代码的编写, 编译, 运行, 调试, 重构等一系列功能于一体的软件.

    常用的IDE如下:

    • Eclipse
    • MyEclipse
    • IDEA (jetbrains)

3. IDEA

A. 概述
  • IDEA 全称 IntelliJ IDEA,是Java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Python等少数语言。
    总结: IDEA这个软件是用Java语言开发的, 所以想使用IDEA, 你电脑上必须安装JRE.
B.下载
  • JetBrains公司官网: www.jetbrains.com
    直接下载地址: www.jetbrains.com/idea/download/other.html
C. 安装
  • 1.双击安装包进行安装, 选择next进行下一步.
  • 2.修改安装路径, 然后选择next.
  • 3.选择64bit(64位), 然后选择next.
  • 4.安装成功.
D. 启动
  • 双击启动

  • 创建项目和模块

E. 用IDEA写一个HelloWorld Java程序
  • class HelloWorld {
      public static void main(String[] args) {
          system.out.println("Hello World!")
      }
    }
    
F. IDEA基本配置
  • 1.设置字体:File->Settings->Editor-> Font
  • 2.设置配色方案:File-> Settings->Editor-> Colors Scheme
  • 3.设置编码:File-> Settings->Editor->File Encodings
  • 4.隐藏不需要的文件:File-> Settings->Editor->File Types
  • 5.显示/隐藏工具条和工具按钮:View->Toolbar
    View->Tool Buttons
G. IDEA常用快捷键
  - 快捷键及简介

  - Ctrl + B
    进入光标所在的方法/变量的接口或是定义处,等效于Ctrl+左键单击

  - Ctrl + D
    复制光标所在行或复制选择内容,并把复制内容插入光标位置下面

  - Ctr + Y

    删除光标所在行或删除选中的行

  -  Ctrl+ N
    通过类名定位文件

  -  Ctrl + F
    在当前文件进行文本查找

  -  Ctrl + /
    注释光标所在行代码

  -  Ctrl + Alt + L
    格式化代码可以对当前文件和整个包目录使用

  -  Ctrl + Alt + 左方向键
    退回到上一个操作的地方

  -  Ctrl+ Alt + 右方向键
    前进到下一个操作的地方

  -  Alt + Shift + 上下箭头
    移动当前代码行 

六. Java注释

1. 概述

  • 就是用来对程序进行解释和说明的文字.
  • 大白话翻译: 注释是给我们程序员看的, 并不是给计算机看的.

2. 分类

  • 单行注释
    //单行注释
    多行注释
    /*
    多行注释
    多行注释
    */
    文档注释
    /**
    文档注释
    文档注释
    */
    
    
    

七. Java关键字

1. 概述

  • 就是被Java语言赋予了特殊含义的单词.

2. 特点

  • 关键字是由纯英文字母组成的, 而且全部都是小写的.
  • 常用的开发工具(Notepad++, IDEA)针对于关键字都会高亮显示.

3. 常用的关键字

  • public: 公共的权限.

  • class: 表示在创建一个类.

  • static: 表示静态的意思.

  • void: 表示方法的返回值类型.

4. 定义Java源代码文件的格式

  • //类名可以自定义.
    public class 类名 {
    public static void main(String[] args) {
    System.out.println("这里的内容可以随便写");
    }
    }
    

5. 保留字

  • 概述:
    现在还不是关键字的单词, 但是却具有关键字的意义, 在以后的JDK升级版本中, 可能会被升级为关键
    字的单词.
  • 常见的保留字:
    goto , const

八. Java常量

1. 概述

  • 指的是在程序的执行过程中, 其值不能发生改变的量.

2. 分类

  • 自定义常量
  • 字面值常量
    解释: 根据字面意思就可以划分的常量.
    • 1.整数常量.
      例如: 1, 2, 3, 11, 22, 521
    • 2.小数常量.
      例如: 5.21, 13.14
    • 3.字符常量.
      解释: 字符的意思是说只能有一个值, 而且要用单引号括起来
      例如: 'A', 'B', 'c', '10'(这样写会报错, 因为10是由1和0两个值组成的)
    • 4.字符串常量.
      解释: 字符串常量值都要用双引号括起来
      例如: "abc", "你好", "世界", "我爱你"
    • 5.布尔常量
      解释: 比较特殊, 值只有两个
      •true, 相当于正确
      •false, 相当于不正确
    • 6.空常量
      解释: 比较特殊, 值只有一个: null, 表示什么都没有.
      注意: 空常量不能通过输出语句直接打印.

九. Java变量

1. 概述

  • 在程序的执行过程中, 其值可以在某个范围内发生改变的量就叫变量.
  • 从本质上讲, 变量其实是内存中的一小块区域. 例如:
    • 商品的价格(5元,6元,4元)
    • 钟表的时间(5点,6点,6点半)
    • 人们的年龄(0岁,10岁,18岁……80岁)
    • 程序员生涯的职位(开发工程师,开发经理,项目经理,CTO)
  • Java中要求一个变量每次只能保存一个数据,而且必须要明确保存数据的数据类型。
    解释:
    • 数据类型:变量变化的范围就是数据类型 byte -128~127 char -215~215-1
    • 变量名:每个变量都有一个名字,方便存取。
    • 初始化值:使用变量前,需要给变量赋值

2. 变量入门

  • 定义变量, 记录班级的学生人数, 并将结果打印到控制台上.

  • 参考代码
    //1. 定义一个Java类, 类名叫: VariableDemo01
    public class VariableDemo01 {
    //2. 定义main方法, 作为程序的主入口, 所有代码都是从这里开始执行的.
    public static void main(String[] args) {
    //3. 定义一个int类型的变量, 变量名叫a, 初始化值为: 121
    int a = 121;
    //4. 通过输出语句, 将变量a的值打印到控制台上.
    System.out.println(a);
    }
    }
    

3. 数据类型

  • Java是一种强类型语言, 针对于每一个数据都给出了明确的数据类型.

    解释:
    • 区分一门语言到底是强类型语言还是弱类型语言的依据是: 看这门语言对数据的数据类型划分是否精细.

    • 如果精细, 则是强类型语言, 如果不精细, 则是弱类型语言.

      a. 数据类型的分类
      • 基本数据类型(简称: 基本类型)

      • byte, short, char, int, long, float, double, boolean

      • 引用数据类型(简称: 引用类型)

      • String, 数组, 类, 接口, 目前先了解, 后续会详细讲解.

      b. 数据类型的分类图解
      • image-20210716195236886
      c. 数据类型的取值范围图解
      • image-20210716195333620

      • 1.byte类型的取值范围是: -128 ~ 127,char类型的取值范围是: 0 ~ 65535

      • 2.默认的整形是: int类型, 默认的浮点型(即: 小数类型)是: double类型.

      • 3.定义long类型的数据时, 数据后边要加字母L(大小写均可), 建议加L

      • 4.定义float类型的数据时, 数据后边要加字母F(大小写均可), 建议加F

      • 5.定义double类型的数据时, 数据后边要加字母D(大小写均可), 建议加D

      d. 格式
      • 方式一: 声明变量并赋值.
        数据类型 变量名 = 初始化值;
        //示例: 声明(定义)一个int类型的变量, 变量名叫a, 初始化值为: 10
        int a = 10;
      • 方式二: 先声明, 后赋值.
        数据类型 变量名;
        变量名 = 初始化值;
        //示例
        //1. 声明(定义)一个int类型的变量, 变量名叫a
        int a;
        //2. 把数字10赋值给变量a
        a = 10;
      e.注意事项
      • 1.变量未赋值,不能使用.
      • 2.变量只在它所属的范围内有效.
      • 3.一行上可以定义多个变量,但是不建议.

十. Java标识符

1. 概述

  • 标识符就是用来给变量, 常量,类, 接口, 方法,包等起名字的规则.

2. 命名规则

  • 标识符只能包含52个英文字母(区分大小写)、0 ~ 9数字 、$(美元符号)和_(下划线)。
  • 标识符不能以数字开头。
  • 标识符不能和Java中的关键字重名。
  • 最好做到见名知意.
    例如: name表示姓名, age表示年龄.

3. 命名规范

A. 类, 接口的命名规范
  • 每个单词的首字母都大写, 其他字母全部小写.(大驼峰命名法)

  • 例如: HelloWorld, VariableDemo.

B. 变量, 方法的命名规范
  • 从第二个单词开始, 每个单词的首字母都大写, 其他字母全部小写(小驼
    峰命名法).
  • 例如: zhangSanAge, studentName
C. 常量(指的是: 自定义常量)的命名规范
  • 所有字母都大写, 单词之间用_(下划线)隔开.
  • 例如: MAXVALUE, MINVALUE, PI
  • 注意: 目前先了解即可, 面向对象部分详细解释.
D. 包的命名规范
  • 所有字母全部小写, 多级包之间用.(点符号)隔开, 一般是公司的域名反写.
  • 例如: cn.itcast, com.itheima

4.示例

  • 需求
    定义变量分别记录张三的年龄和性别(假设: 23, 男), 然后将变量值打印到控制台上.

  • //1. 定义一个类, 类名叫: VariableDemo06
    public class VariableDemo06 {
    //2. 定义main方法, 作为程序的主入口.
    public static void main(String[] args) {
    //3. 定义变量, 记录张三的年龄.
    int zhangSanAge = 23;
    //4. 定义变量, 记录张三的性别.
    char zhangSanSex = '男';
    //5. 打印年龄.
    System.out.println(zhangSanAge);
    //6. 打印性别.
    System.out.println(zhangSanSex);
    }
    

十一. Java数据类型转换

1. 概述

  • 不同类型的数据之间可能会进行运算,而这些数据取值范围不同,存储方式不同,直接进行运算可

2. 分类

  • 自动(隐式)类型转换
  • 强制(显式)类型转换

3. 自动(隐式)类型转换

  • 指的是小类型转大类型,会自动提升为大类型,运算结果是大类型.
    大白话翻译: 将取值范围小的类型自动提升为取值范围大的类型

  • 练习:

    • 1.定义两个int类型的变量a和b, 分别赋值为10, 20.

    • 2.通过输出语句打印变量a和b的和.

    • 3.定义int类型的变量c, 接收变量a和b的和.

    • 4.打印变量c的值.

    • 5.定义两个变量aa和bb, 一个是int类型的数据, 另一个是byte类型的数据.

    • 6.定义变量cc接收变量aa和bb的和.

    • 7.分别设置变量cc的数据类型为byte类型和int类型, 观察结果并打印.

  • 解释

    当byte类型的数据和int类型的数据的数据进行计算时, 会自动将byte类型的数据提升为int类型, 然后再计算.

  • 思考

    • 如果是int类型的数据和double的数据相加, 结果是什么类型?
    • 如果是char类型的数据和int类型的数据相加, 结果是什么类型?
    • 如果是boolean类型的数据和int类型的数据相加, 结果是什么类型?
  • 结论

    • 转换规则为:

      • 范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int ,小数类型自动提升为 double类型。

      • boolean类型的数据只有true和false这两个, 所以boolean类型的数据不参与类型转换.
        即: byte、short、char-->int-->long-->float-->double

4. 强制(显式)类型转换

  • 指的是手动将大类型转换成小类型,运算结果是小类型.
  • 大白话翻译: 将取值范围大的类型强制转换成取值范围小的类型.
格式
  • 数据类型 变量名 = (数据类型)要被转换的数据值;
    //示例: 将1.5赋值给int类型,代码修改为:
    int a = (int)1.5;
思考题
  • 下述代码会不会报错, 如果会, 哪一行会报错, 为什么? 怎么修改代码?

    public class DataTypeDemo03 {
    public static void main(String[] args) {
    short s = 11;
    s = s + 3;
    System.out.println(s);
    }
    }
    

十二. ASCII码表

  • 观察下述代码, 打印结果是多少呢?

    public static void main(String[] args) {
    //字符类型变量
    char c = 'a';
    int i = 1;
    //字符类型和int类型计算
    System.out.println(c+i); //输出结果是???
    }
    
  • 在计算机的内部都是二进制的0, 1数据,如何让计算机可以直接识别人类文字呢?
    于是就产生出了编码表的概念。

    • •编码表:就是将人类的文字和一个十进制数进行对应起来组成一张表格。 ‘a’ -> 97 char:0-65535

    • •存储字符时:需要查找ASCII码表,找到字符对应的数字,将数字转换为二进制数存放到计算机中

    • •使用字符时:将对应的二进制数转换为十进制 找到ASCII表中对应的字符 显示出来

    • •将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII码
      表.

    • ASCII(American Standard Code for Information Interchange 美国标准信息交换码), 规则如下:

    • 字符 数值

    • 字符 数值
      0 48
      9 57
      A 65
      Z 90
      a 97
      z 122
    • 注意:

      • 在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。
        char类型提升为了int类型。char类型内存2个字节,int类型内存4个字节。
      • image-20210717123337816

十三. 运算符

1. 概述

  • 运算符和表达式
    • 运算符:用来连接常量或者变量的符号, 就叫运算符.
    • 表达式:用运算符把常量或者变量连接起来符合java语法的式子就称之为表达式。
    • 不同运算符连接的表达式体现的是不同类型的表达式。
    • 例如:
      • +(加号) 是运算符,并且是算术运算符。
      • a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。

2. 分类

  • 算术运算符
  • 赋值运算符
  • 比较(关系)运算符
  • 逻辑运算符
  • 三元(三目)运算符

3. 算术运算符

  • 算术运算符指的是用来对变量或者常量进行算术操作的, 例如: 加减乘除等.
分类
  • 算数运算符包括: 作用
    + 加法运算,字符串连接运算
    - 减法运算
    * 乘法运算
    / 除法运算
    % 取模运算,两个数字相除取余数
    ++ 自增运算符, 相当于自身 + 1
    -- 自减运算符, 相当于自身 - 1
  • 自增自减运算符

  • 符号 作用 说明
    ++ 自增 变量的值加1
    -- 自减 变量的值减1

4. 赋值运算符

  • 符号 作用 说明
    = 赋值 a=10,将10赋值给变量a
    += 加后赋值 a+=b,将a+b的值给a 类似于 a=a+b
    -= 减后赋值 a-=b,将a-b的值给a
    *= 乘后赋值 a*=b,将a×b的值给a
    /= 除后赋值 a/=b,将a÷b的商给a
    %= 取余后赋值 将a÷b的余数给a

5. 关系运算符

  • 关系运算符就是用来描述两个变量或者常量之间的关系的.主要分为以下6种:

  • 符号 说明
    == a==b,判断a和b的值是否相等,成立为true,不成立为false
    != a!=b,判断a和b的值是否不相等,成立为true,不成立为false
    > a>b,判断a是否大于b,成立为true,不成立为false
    >= a>=b,判断a是否大于等于b,成立为true,不成立为false
    < a<b,判断a是否小于b,成立为true,不成立为false
    <= a<=b,判断a是否小于等于b,成立为true,不成立为false

6. 逻辑运算符

  • 逻辑运算符是用来判断并且, 或者, 除非等逻辑关系的符号.

  • 该符号两端一般连接值为布尔类型的关系表达式

    符号 作用 说明
    & 逻辑与 a&b,并且的意思. 有false则整体为false, 都为true, 则整体为true.
    | 逻辑或 a|b,或者的意思, 有true则整体为true, 都为false, 则整体为false.
    ! 逻辑非 !a,取反的意思, 以前为true, 取反后为false, 以前为false, 取反后为true.
    ^ 逻辑异或 a^b,异同的意思, 相同为0, 不同为1.

7. 三元运算符

  • 符号 作用 说明
    && 短路与 作用和&相同,但是有短路效果, 前边出现false, 后边不执行.
    || 短路或 作用和|相同,但是有短路效果, 前边出现true, 后边不执行.

十四. 键盘录入

十五. 流程控制

posted @ 2021-07-18 21:22  不知东方之即白  阅读(138)  评论(0)    收藏  举报