前言 JAVA语言概述

  • 高级编程语言
  • 适合B/S(Broswer/Serv)
  • Java版本 版本5和8牙膏挤的多
  • 能做什么?举例:电商系统、物流系统、金融系统、大数据挖掘

引言 计算机基础知识

二进制

逢二进一,计算机中全部采用二进制数0/1表示,1位信息为1bit

  • 十进制转二进制
    一直除2,取所产生余数的逆序排列
  • 二进制转十进制
    权重乘系数和
  • 工具
    计算机->计算器->程序员
    HEX/DEC/OCT/BIN
    16/10/8/2

字节

  • 位(bit):一个数字0或者数字1,代表一位
  • 字节(Byte):每逢8位是一个字节,是数据存储最小单位
  • 1Byte = 8 bit
  • 宽带bps和***Bps之间的关系
  • 1KB = 1024 Byte
  • 1MB = 1024 KB
  • 1GB = 1024 MB
  • 1TB = 1024 GB
  • 1PB = 1024 TB
  • 1EB = 1024 PB
  • 1ZB = 1024 EB

命令提示符_基本介绍

  • 图形化界面、命令行
  • 命令提示符(cmd)
  • / 正斜杠
  • \ 反斜杠
  • 启动:WIN+R -> cmd
  • 黑窗口->计算机中的目录与地址

    命令提示符_常用命令

  • 切换盘符:
    C:
    根目录\
  • 改变路径
    cd
    TAB键自动补全
  • 返回上一级
    cd ..
  • 绝对路径
    cd 文件夹1\文件夹2...
    cd \
  • 查看当前文件夹内容
    dir
  • 清屏
    cls
  • 退出
    exit

第一章Java语言开发环境搭建

Java虚拟机--JVM(Java Virtual Machine)

  • JVM
    JVM是运行所有Java程序的假想计算机,是Java程序的运行环境,即我们编写的Java代码都运行在JVM之上。
  • 跨平台
    任何软件的运行,都必须运行在操作系统之上,而我们用Java编写的软件可以运行在任何操作系统上,统称为 Java语言的跨平台特性 。该特性是有JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
    图片说明
    如图,Java的虚拟机本身不具备跨平台功能,而是每个操作系统下都有不同版本的的虚拟机
  • 打个比方,Java程序是中国话,WINDOWS是韩国,win版JVM就是韩国翻译;Linux系统是日本,linux版JVM就是日本翻译;mac系统是老美,mac版JVM就是美国翻译*

JRE和JDK

  • JRE(Java Runtime environment):是Java程序运行时的环境,包含JVM和运行时所需要的核心类库
  • JDK(Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用工具。电工包里面的电笔、电线...
    我们想要运行一个已有的Java程序,那么只需要安装JRE即可
    我们想要开发一个全新的Java程序,那么需要安装JDK
    三者包含关系如下图:
    图片说明

JDK的下载和安装

  • ORACLE
  • 版本
  • 之前在HOW2J学习安装过,不详述

    环境变量配置

  • 命令行窗口不能直接启动java.exe
  • 为了能直接启动,不需要进入bin目录再启动
  • 思路:建立一个jAVA_HOME的名字,然后内容是bin的上一级目录,再在Path中添加JAVA_HOME,重启命令行

第三章 Hello World入门程序

程序开发步骤说明

  • Java程序开发三步骤:编写、编译、运行
    图片说明
  • java源程序 -> java字节码 -> JVM运行
  • java源代码编辑器 -> javac.exe编译 -> java.exe解释器运行
  • HelloWorld编写 创建文本文件 -> 将.txt后缀改为.java后缀 -> 记事本打开 -> 编写代码
  • 编译运行:进入命令行界面 -> 进入.java所在目录 -> 输入 javac HelloWorld.java-> 目录中生成.class文件 -> 命令行中输入 java HelloWorld ->显示HelloWorld!!!
  • 介绍notepad++
  • 注释 单行注释 //多行注释 /*多行注释,也称区块注释*/
  • tips1:第一行第三个单词要与文件名一致,大小写也要一样,public class后面代表定义一个类的名称,类是java中所有源代码的基本组织单位
  • tips2:第二行的内容是万年不变的固定写法,代表main方法,且这一行是程序执行的起点
  • tips3:System.out.println("")是输出语句
  • tips4:完整语句后要加英文分号;
  • 关键字的特点:1、完全小写的字母 2、特殊颜色
  • 标识符:类名,方法名,变量名都是标识符。包含字母、数字、美元符号和下划线_。标识符不能以数字开头;不能是关键字。
  • 标识符软性建议:类名规范:大驼峰式;变量名规范:小驼峰式;方法名规范:同变量名,小驼峰式。

第四章 常量

常量

程序运行期间,固定不变的量

常量分类

  1. 字符串常量:凡是用引号引起来的部分,叫做字符串常量。例如:"Hello"、"abc"、"98"
  2. 整数常量:自然数(无小数点)。例如:100,-250,0
  3. 浮点数常量:(有小数点)。例如:2.5、-3.3
  4. 字符常量:凡是单引号引起来的单个字符,叫做字符常量。例如:'a'、'A'、'9'、'中'
  5. 布尔常量:ture、false
  6. 空常量:null。代表没有任何数据。

    练习

    图片说明

数据类型(基本数据类型和引用数据类型)

  • 基本数据类型:四类八种
  • 整数型:byte、short、int(默认)、long (int的2^31大概是21亿,如果表示中国人口用int就够了)
  • 浮点型:float、double(默认)
  • 字符型:char
  • 布尔型:boolean
    图片说明
  • 引用数据类型
    字符串、数组、类、接口、Lambda
    注意事项:
    1.字符串不是基本类型,而是引用类型
    2.浮点数可能是一个近似值,并非精确值
    3.浮点数默认是double。如果一定要使用float类型,需要加上后缀F
    4.如果是整数,默认是int类型,如果一定使用long,则要加后缀L

第五章 变量

变量

程序运行期间,内容可以发生改变的量
创建一个变量并使用的格式:

数据类型 变量名称;//创建了一个变量
变量名称 = 数据值;//赋值,将右边的数据值,赋值给左边的变量

一步到位的格式:

数据类型 变量名称 = 数据值;//在创建一个变量的同时,立刻放入指定得数据值

赋值溢出
图片说明
将一个变量的内容,赋值交给另一个变量

boolean var1 = true;
boolean var2 = var1;

注意事项:

1.如果创建多个变量,那么变量之间的名称不可重复
2.对于float和long类型来说,字母后缀F和L不可丢掉
3.如果使用byte或者short类型的变量,那么右侧数值不能超过左侧数值
4.没有赋值的变量不能直接使用,赋值之后才能使用
5.变量使用不能超过作用域范围。[作用域]:从定义变量开始,一直到直接所属大括号为止
6.可以通过一个语句来创建多个变量,但是一般情况下不推荐这么写

练习

图片说明

第六章 数据类型转换

当数据类型不一样时,将会发生数据类型转换

  • 自动类型转换(隐式):1.特点:代码不需要特殊处理,自动完成 2.规则:数据范围从小到大
    long num1 = 100 //左边是一个long类型,右边是默认的int类型,左右不一样,等号为赋值,将右侧的int常量交给左侧的long变量进行存储,int -- >long,f=符合数据范围从小到大的要求,所以这一行代码发生了自动类型转换
  • 强制类型转换:1.特点:代码需要进行特殊的处理 2.格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
    int num2 = int(100L)
  • 注意事项

1.强制类型转换一般不推荐使用,因此可能发生精度损失、数据溢出。
2.byte/short/char这三种类型都可以发生数***算,例如加法“+”
3.byte/short/char这三种类型在进行运算的时候,都会被首先提升为int类型,然后再计算
4.布尔类型不能发生数据类型转换

int num3 = (int)6000000000//运行结果为17亿多。int上限是21亿,右侧是60亿,所以溢出,好比大水桶里的水(60亿)倒进小水桶(int),就会有水溢出
int num4 = (int)3.5//小数位会被舍弃,精度损失,运行结果为3
char zifu1  = 'A'
System.out.println(zifu1+1)//运行结果为66,yejiushi daxiezimu A被当做65进行处理。65即是A的ASCII码。计算机的底层会用一个数字(二进制)来代表字符A,就是65。
byte5 = 40;
byte6 = 50;
//byte + byte -->int + int -->int
int result1 = num5 +num6  //result1前不是byte!!!尽管数据并没有溢出,不然会报错,因为num5和num6已经是int类型了,和也是int类型
System.out.println(result1)

ASCII编码表和Unicode码表

  • ASCII码表(小表):常用字符的二进制值,源自老美
    不需要全记,记三个即可
    ‘0’ --> 48, 'A' --> 65, 'a' --> 97
    其他的以此类推
  • Unicode码表(大表):万国码。也是数字与符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含更多的字符,中文泰文等,甚至有emoji表情。

第七章 运算符

  • 运算符:进行特定操作的符号。例如,+
    表达式:用运算符连起来的式子叫表达式。例如:20 + 5。又例如:a + b
  • 四则运算:
    加:+
    减:-
    乘:*
    除:/
  • 除法公式:被除数/除数 = 商...余数
    对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果仍然是整数。只看商,不看余数。
  • 取模:%
    只有整数的除法,取模运算符才有余数的意义
  • 注意事项:一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种

算数运算符

int a = 20;
int b = 30;
//两个常量之间的数***算
System.out.println(20+30);
//两个变量之间的数***算
System.out.println(a-b)
//常量与变量之间的混合运算
System.out.println(a * 10)
//除法
int x =10;
int y = 3;

int result1 = x / y; 
System.out.println(result1) //3

int result2 = x % y;
System.out.println(result2) //取模,余数,1

//int + double --> double
double result3 = x + 2.5;
System.out.println(result3); //12.5
  • 四则运算中加号“+”有常用的三种用法
    1.对于数值来说就是加法
    2.对于字符char来说,在计算之前,char会被提升为int,然后再计算 ,char类型字符和int类型数字之间的对照关系表:ASCII、Unicode
    3.对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作
    任何数据类型和字符串进行连接的时候,结果都会变成字符串
    System.out.println("Hello"+"World");//HelloWorld
    System.out.println("java" + 2020)  //java2020
    //优先级问题
    System.out.println("java"+ 2020 + 12) //java202012
  • 自增自减运算
  • 自增运算符:++
    自减运算符:--
  • 使用方式:
    1.单独使用:不和其他操作混合,自己独立成为一个步骤
    2.混合使用:和其他操作混合,例如与赋值混合,或者与打印混合等
  • 使用区别:
    1.在单独使用的时候,前++和后++没有任何区别
    2.在混合使用的时候,有[重大区别]
    A. 如果是前++,那么变量立刻马上加一,然后拿着结果来用------先加后用------++在前,先自增,在运算
    B. 如果是后++,那么首先使用变量本来的值,然后让变量+1------先用后加------++在后,先运算,再自增
//与打印操作混合
int num1 = 30;
int num2 = 20; 
System.out.println(++num1)//31
System.out.println(num1)//31
System.out.println(num2++)//20
System.out.println(num2)//21
//赋值与打印混合使用
int x = 10;
int y = 20;
result4 = ++x + y-- //11 + 20
System.out.print(result4) //31
System.out.print(x) //11
System.out.print(y) //19
  • 注意事项:只有变量才能自加自减,常量不可变,所以不能使用自加自减。

赋值运算符

赋值运算符分为:

  • 基本赋值运算符:就是一个等号 “=”,代表将右侧的数据交给左侧的变量
  • 复合赋值运算符:
    += : a += 3 相当于 a = a + 3
    -=
    *=
    /=
    %=
  • 注意事项:等号左边必须是变量,常量不可赋值
byte c = 30;
c += 5;//
//c = c + 5
//c = byte + int
//c = int + int 
//c =int 
//c = (byte)int
System.out.println(c);//35 

比较运算符

  • 等于 ==
  • 大于 >
  • 小于 <
  • 不小于 >=
  • 不大于 <=
  • 不等于 !=
  • 比较结果是布尔类型true或者false
//不支持写法
System.out.println(1 < x <3);//编译报错

逻辑运算符

  • 与 &&
  • 或 ||
  • 非 !
  • 与&&、或||具有短路效果,如果根据左边已经可以判断得到最终结果,那么右边代码将不再执行,从而节省一定性能
    System.out.println(3 < 4 && 10 > 5 ) //true
//短路效果
int a = 10;
System.out.println(3 > 4 && ++a < 100);
//false && ...-->false(**...并不执行!!!**)
System.out.println(a);// 10
  • 注意事项
    逻辑运算符智能用于boolean值
    与、或需要左右一个boolean值,但是取反只要有唯一的一个boolean值即可
    与、或两种运算符,如果有多个条件,可以连续写。
    两个条件:条件A && 条件B
    多个条件:条件A && 条件B &&条件C
    TIPS:
    对于 1<x<3 的情况,应该拆成两部分,然后使用与运算符连接起来
int x = 2;
1<x && x<3

三元运算符

  • 一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反!、自增++、自减————
  • 二元运算符:需要两个数据就可以进行操作的运算符。例如:加法+、赋值=
  • 三元运算符:需要三个数据就可以进行操作的运算符。
    格式:数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B
    流程:首先判断条件是否成立:
  • 如果成立为true,那么将表达式A赋值给左侧变量
  • 如果表达式为false,那么将表达式B的值给左侧变量
    二者选其一
int a = 10;
int b = 20;
int max = a > b ? a : b; //最大值变量 
System.out.println("最大值:" + max);//20

System.out.println(a > b ? a : b);//正确写法
int result = 3 > 4 ? 2.5 :10//错误写法