Java基础知识

本小妞迷上赌 提交于 2019-12-01 07:07:06

目录

1.0 Java基础

1.0.1 Java的发展史

1.0.2 Java的跨平台

1.0.3 JVM安装

1.1第一个Java程序

1.1.1 关注的重点内容

1.1.2 代码编写

1.1.3代码的关注点

1.2 Java数据类型

1.2.1 数据类型是什么

1.2.2 数据类型分类

1.3 Java中的变量

1.3.1 什么是变量

1.3.2 如何定义变量

1.4运算符

1.4.1运算符分类

1.4.2算术运算符

1.4.3 比较运算

1.4.4字符类型的比较原理

1.4.5逻辑运算符

1.4.6三目运算符

1.4.7单目运算符

1.5 条件判断

1.5.1 条件判断的分类

1.5.2 if语句

1.5.3 switch语法

1.6 循环

1.6.1 循环分类

1.6.2 while循环

1.6.3 do..while 循环

1.6.4 for循环

1.6.5 foreach 循环

1.6.6 continue 关键字

1.6.7 总结break 和 continue

1.6.8 任务

1.7 数组

1.7.1 数组的意义

1.7.2 数组的语法

1.7.3 数组的分类

1.7.4 数组的赋值与遍历

1.7.5 数组的报错

1.7.6 数据类型转换

1.7.7 任务

1.8 字符串

1.8.1 字符串初始化

1.8.2 字符串构造方法

1.8.3 字符串方法的使用

1.8.4 charAt(int index)

1.8.5 equals(Object another)

1.8.6 indexOf(String str)

1.8.7 replaceAll(String regex,String replacement)

1.8.8 split(String regex)

1.8.9 substring(int beginIndex)

1.9 面向对象

1.10 面向对象要学习的内容

1.11 类和对象

1.11.1 什么是类

1.11.2 什么是对象

1.11.3 类和对象之间区别

1.12 方法

1.12.1 方法定义的方式

1.12.2 无返回值+无参数的方法定义

1.12.3 有返回值+无参数的方法定义

1.12.4 无返回值+有参数的方法定义

1.12.5 有返回值+有参数的方法定义

1.13 面向对象中的变量应用

1.13.1 面向对象中的变量的叫法

1.13.2 变量作用域

 


1.0 Java基础

1.0.1 Java的发展史

  1. 1995年诞生
  2. 为了解决跨平台编程的应用(支持Linux,Window,Mac)
  3. 2000年互联网的应用Java具有很好的优势
  4. 2017年Java的大数据应用,分布式开发Java优势明显
  5. 2017年提出AI,人工智能Java也会有它优势

1.0.2 Java的跨平台

  1. 主要能够影响Java的跨平台,全靠Java的虚拟机(JVM)
  2. 我们要想运行一个Java程序,需要安装JVM,同时还需要配置Java的环境变量

1.0.3 JVM安装

  1. 在Java的官方网站去下载JDK的文件
  2. 建议各位安装的JDK与你的操作的位数关联(x86, x64)
  3. JDK现在的版本1.8+

1.1第一个Java程序

1.1.1 关注的重点内容

  1. 理解Java程序的运行流程
  2. 检验你的Java环境变量是否OK
  3. 编写Java程序的规范

1.1.2 代码编写

1.1.2.1代码编写的相关解释

  1. 环境变量配置好之后,我们可以使用记事本或者文本编辑器(EditPlus, NodePad++)来编译执行java代码
  2. Java的IDE,推荐使用Eclipse,你如果使用Eclipse无需配置Java环境变量

1.1.2.2 代码的规范

  1. Java是严格区分英文字母大小写
  2. 代码中出现了左右花括号{}它有一个首尾呼应,代表中间是写代码的地方
  3. 你写好的Java代码保存的文件名称一定要和代码名称一模一样
  4. 代码保存结束后会生成一个.java的后缀文件
  5. Java中代码注释有两种://(单行注释)/**/(多行注释)
  6. Java编程中代码命名规范:驼峰命名(除第一个单词,其它首字母大写)

1.1.2.3 Java程序运行流程

  1. 先编译,通过javac命令去编译
  2. 再通过java命令去运行

 

1.1.3代码的关注点

  1. Java程序中的主函数,帮助我们运行Java代码,能够看到程序运行的效果
  2. 没有main方法的程序是无法运行的,main方法不能乱写

1.2 Java数据类型

1.2.1 数据类型是什么

  1. 程序中如果要存储数据,则需要定义一种存储的格式,而这种格式我们叫做数据类型

Eg:数据类型好比容器,这里的容器我们拿杯子来形容,杯子是拿来装东西的,装的东西可以是水,可以是咖啡、牛奶,这些不同的内容就是各种类型的数据

1.2.2 数据类型分类

  1. 基本数据类型
  2. 引用数据类型

1.2.2.1 基本数据类型

  1. 8种基本数据类型:整形(4个),浮点型(2个),字符型(1个),布尔型(1个)
  2. 整形
  • byte:存储一个字节,8位,存储的有效范围  -2^(8-1)~2^(8-1)-1
  • short:存储2个字节,16位,存储的有效范围 -2^(16-1)~2^(16-1)-1
  • int:存储4个字节,32位
  • long:存储8个字节,64位
  1. 浮点型
  • float:存储4个字节,32位
  • double:存储8个字节,64位
  1. 字符型
  • char:存储2个字节,16位。存储1个汉字,1个字母,1个特殊符号
  1. 布尔型
  • boolean:没有长度的定义,只有两个值:true或者false。运用到程序中条件判断,逻辑判断...

1.3 Java中的变量

1.3.1 什么是变量

  1. 当我们想存储一个数字,一个字符,其他数据。则程序中会用一个变量的方式来存储值。我可以理解数学中的方程式中x,y,z

1.3.2 如何定义变量

  1. 语法:数据类型变量的名称 [ = 数值];
  2. 分号“;”,代表一段程序语句的代码结束

1.4运算符

1.4.1运算符分类

  1. 算术运算符
  2. 比较运算符
  3. 逻辑运算符

1.4.2算术运算符

  1. 简单算术运算符:+,-,*,/,%

  1. 复杂一点运算符:+=, -=, *=, /=, %=, ++, --
  • 理解到上面的运算符即在做运算又在做赋值的操作
  • +=:先加在赋值
  • -=:先减在赋值
  • *=:先乘法在赋值
  • /=:先除法在赋值
  • %=:先求模在赋值

1.4.3 比较运算

  1. 比较运算会有计算结果,但是结果的值是布尔类型
  2. 比较运算有哪些:>, <, >=, <=, !=, ==

1.4.4字符类型的比较原理

1.4.4.1字符编码的基础介绍

  1. 字符类型它是可以转换成一些数字,通过这些数字可以代表某一个字符
  2. ascii码,对英文的字母,符号可以通过一个整型数字来表示
  3. uincode编码,对中文的字符通过十六进制数来表示

1.4.4.2 ASCII码

  1. 凡是字符类型存储是字母,数字,符号,它们之间的比较是通过ASCII方式来进行计算

1.4.4.3 unicode编码

  1. 中文汉字是可以通过字符类来存储的,中文汉字的比较其实是通过unicode编码来计算的

 

1.4.5逻辑运算符

  1. 语法规范:布尔值逻辑运算符 布尔值
  2. 主要包含: &&, &, ||, !, ^(异或)
  3. 与(&&, &):满足两个同时true,结果才是true
  4. 或(||, ||):满足其中一个为true,结果为true
  5. 非(!): !布尔值,得到结果就是相反的值

1.4.6三目运算符

  1. 语法:数据类型 变量名称 = 布尔表达式 ? 值1 : 值2;
  2. 当布尔表达式为true,则变量取值为值1
  3. 当布尔表达式为false,则变量取值为值2

1.4.7单目运算符

  1. 语法: 整型变量++, 整型变量--, ++整型变量, --整型变量
  2. 加号或者减号在变量后面,它运算的方式: 先使用后做运算
  3. 加号或减号在变量的前面,它运算的方式: 先做运算再使用
  4. 单目运算的计算过程每次只加1或者减1

1.5 条件判断

1.5.1 条件判断的分类

  1. if语句
  2. if..else语句
  3. if..else if语句
  4. if..else if...else语句
  5. switch语句

1.5.2 if语句

  1. 作用:给一个条件(true 或 false),然后条件为正,则执行if语句中代码
  1. 语法:

if (布尔类型) {

  //程序代码

}

 

if (布尔类型) {

  //程序代码

} else {

  //程序代码

}

 

if (布尔类型) {

  //程序代码

} else if(布尔类型) {

  //程序代码

} else if (布尔类型) {

  //程序代码

} else {

  //程序代码

}

  1. 案例:判断3个数字中最大的和最小的

  1. if的使用规则
  • if语句可以单独存在
  • else if一定是在else前面
  • if语句可以嵌套使用

1.5.3 switch语法

  1. 开关语句
  2. 语法

switch(值) {

  case 值 :

    //程序代码

  break;

  case 值 :

    //程序代码

  break;

  default :

    //程序代码

}

Eg:单刀双掷开关

  1. 流程图

  1. 案例:从键盘中输入一位数字,然后给出这个数字的中文大写
  • 键盘输入会用到Java中类库文件(类似网页中已经设计好的标签), Scanner
  • 判断是不是输入的一位数字
  • 最后在利用switch语句进行一个中文大写的转换
  1. Scanner是一个能够接收键盘输入的IO流,我们必须学习它的API文档

1.6 循环

1.6.1 循环分类

  1. while
  2. do..while
  3. for

1.6.2 while循环

  1. 语法

while (布尔值) {

  //程序代码

}

  1. 不用把代码做成死循环,然后需要关注循环如何结束
  • break关键字来停止循环
  • return关键字来停止循环
  1. 案例:从1+2+...+100计算后得结果

  1. 循环是可以嵌套使用
  2. 案例:九九乘法表

1.6.3 do..while 循环

  1. do..while 循环是首先不判断条件先执行循环,然后再判断
  1. 语法:

do {

  //程序代码块

}while(布尔值);

  1. 案例:九九乘法表

1.6.4 for循环

  1. 语法:

for (变量定义; 比较表达式; 变量递增) {

  //程序代码

}

  1. 案例:九九乘法表

  1. for循环的执行流程
  • 进入循环先执行变量的定义
  • 判断循环里面的比较表达式是否为true
  • 如果为true,则执行循环体里面的代码
  • 循环体里面的代码执行结束后,再执行循环的递增条件

1.6.5 foreach 循环

  1. foreach循环是JDK5以后的新特性,主要针对数组,集合来完成比较方便的元素遍历访问
  2. 语法:

for (变量 : 变量) {

  //程序代码

}

  1. 案例:遍历一个数组

1.6.6 continue 关键字

  1. 主要用在循环里面,跳出本次循环,接着执行下一次循环

1.6.7 总结break 和 continue

  1. break关键字,如果遇到是一种多重循环,则break只是跳出(结束)当前循环
  2. continue关键字,如果遇到是一种多重循环,则continue只是跳出本次循环,但是不是结束本次循环

1.6.8 任务

  1. 求出任意数字的各个位数之和

  1. 计算一个数字是不是水仙花数(各个位数的立方和等于此数)

  1. 求出任意数字是不是质数

  1. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

1.7 数组

1.7.1 数组的意义

  1. 定义一个变量的时候,一次性存储多个值

1.7.2 数组的语法

  1. 语法:

数据类型[] 变量名称 = 存储值;

  1. 初始化
  • 第1种:int[] a = new int[10]; 定义一个整型数组,能够存储10个值。这个数组是没有具体指定值,则默认为10个0
  • 第2种:int[] a = {1,2,3,4,5,6}; 定义一个数组,且将具体值赋值给数组
  • 第3种:int[] a = new int[]{1,2,3,4,5,6}; 定义一个数组
  • 第4种:int[] a = {}; 定义一个数组,没有值

1.7.3 数组的分类

  1. 一维数组
  2. 多维数组:int[][] a = new int[2][3]; 二维数组

1.7.4 数组的赋值与遍历

  1. 索引:数组中元素存储是有个下标值,而且这个下标值是从0开始计算

  1. 数组的赋值

 

  1. 数组遍历:如何去访问数组中的元素
  • 数组中有一个属性,length。它代表是数组长度定义
  • 如何使用length,必须先将数组初始化
  • 见这个代码: int[] a = new int[10]; int len = a.length;
  1. 一般遍历通过for循环来完成

1.7.5 数组的报错

1.7.5.1 数组未初始化异常

1.7.5.2 数组空指针异常

1.7.5.3 数组下标越界异常

1.7.5.4 不同类型数组不能直接进行转换

  1. 因为数组是一个引用类型数据,这个就需要和面向对象编程有关系
  2. 不是说什么都不能进行类型转换,而是需要看它们类型之间有没有关系(继承

 

1.7.5.5 基本数据类型的数组不能强制转换

1.7.6 数据类型转换

  1. 为什么要数据类型转换
  • 比如一个int类型转换成byte类型会导致byte类型精度损失
  • 出现类型不兼容情况,也考虑类型转换

  1. 类型转换的方式有两种
  • 自动类型转换
  • 强制类型转换
  1. 什么时候是自动类型转换,什么时候是强制类型的转换。这个与数据类型的精度有关系
  • byte --> short --> int (char) --> long --> float --> double,低精度往高进度走
  • 自动类型转换:小往大(小的给大的赋值),类型自动转换
  • 强制类型转换:大往小(大的给小的赋值),强制类型转换
  1. 强制类型转换语法格式:数据类型变量名称 = (数据类型) 变量名称

1.7.7 任务

  1. 给定一个数组,里面存储10个double类型数据。求他们中最大和最小
  2. 给定一个数组,求里面是水仙花的元素
  3. 给定一个数组,里面存储不限个数的元素。将数组中的元素进行逆序排列
  4. 随机生成100个英文字母,请统计这100个英文字母出现的次数,要求没有出现的就算做0次
  5. 写一个冒泡排序算法

1.8 字符串

  1. 字符串解决字符类型一些缺点,因为字符类型只能存储一个字符,但是要想存储多个字符,我们采用字符串方式
  2. 字符串在Java里面是一个类,按照我们前面讲到数据类型,字符串是一个引用类型

1.8.1 字符串初始化

1.8.2 字符串构造方法

  1. String(String original):构造方法定义, 括号里面代表能够接收的数据类型是什么
  2. 构造方法的使用需要通过 new 关键字来应用

1.8.3 字符串方法的使用

  1. 为什么要给大家讲讲字符串的方法?
  • 求某个文件的后缀名是什么(IO流程用法)。比如:1.txt, 2.exe, 3.doc,采用字符串的截取子串的方法
  • 判断你输入的电话号码是否包含了其他特殊符号。在开发的过程中对数据进行校验,采用字符串的求每个字符,然后加以判断
  • 如果输入的内容包含有非法的信息,则在开发过程中需要替换这些非法信息,采用字符串的替换方法
  1. 常用字符串方法进行举例说明
  • public char charAt(int index):根据索引去找其中某一个字符
  • public boolean equals(Object anObject):比较两个字符串是否相当
  • public boolean equalsIgnoreCase(String anotherString):忽略大小写,然后去比较两个字符串是否相当
  • public int indexOf(String str):求某个字符在原始字符串中索引位置
  • public int length():求字符串的长度
  • public String replaceAll(String regex,String replacement):将字符串中某个字符进行替换操作
  • public String[] split(String regex):根据字符串的某一个特殊符号进行字符串的拆分
  • public String substring(int beginIndex):求子串

1.8.4 charAt(int index)

  1. public char charAt(int index):根据索引去找其中某一个字符
  • 括号里面方法允许接收变量类型
  • 外面的char是指这个方法计算的结果是什么类型

1.8.5 equals(Object another)

  1. public boolean equals(Object another)
  • 参数Object another,Object是一个数据类型,代表任意数据类型

1.8.6 indexOf(String str)

  1. public int indexOf(String str):传入一个字符串去寻找这个字符串的位置

1.8.7 replaceAll(String regex,String replacement)

  1. public String replaceAll(String regex,String replacement):将字符串中某个字符进行替换操作

1.8.8 split(String regex)

  1. public String[] split(String regex):根据字符串的某一个特殊符号进行字符串的拆分

1.8.9 substring(int beginIndex)

  1. public String substring(int beginIndex):求子串

1.9 面向对象

1.10 面向对象要学习的内容

  1. 告诉我们什么是面向对象
  2. 类和对象
  3. 类的语法,结构
  4. 方法,构造方法,全局变量,局部变量
  5. 面向对象四大特征:继承,封装,多态,抽象
  6. 高一点点的应用:内部类,匿名内部类,外部类

1.11 类和对象

1.11.1 什么是类

  1. 利用Java编程语言来描述一个模型或是一个对象特征,如果要编写一个段程序来表达他们的特征,则我们需要使用Java中类的来完成它的实现
  2. 定义一个类的语法

修饰符 class 类名 {

   属性

   方法

}

  1. 属性,就是我们平时学到Java基础中的变量
  2. 方法,代表这类的功能有哪些
  3. 案例:描述一个人的特征和行为。前提条件使用Java语言来描述他们

public class Person {

 

         public double height; //声明一个变量, 描述人的身高

         public double weight; //声明一个变量, 描述人的体重

 

         public void eat() {} //声明一个方法,描述人的行为方式, 人这类的功能

 

         //main方法是整个Java应用程序的入口

         //程序运行的入口

         public static void main(String[] args) {

                  System.out.println("Hello World!");

         }

}

 

1.11.2 什么是对象

  1. 对象:一个类的具体实现,或者说一个类具体展现形式
  2. 案例:定义一个人类,则具体实现可以张三,也可以是李四。。。。
  3. 对象语法:

类名 对象 = new 类名();

  1. 上语法的几个关键点
  • 语法中的对象用程序方式来说明(或者实现),则对象就是经常定义变量
  • 类名又是什么,就是对象的数据类型(引用数据类型)
  • new 类名(),类的构造方法
  • new 关键字就是程序中初始化的含义
  1. 案例:实现Person类,然后去获取到Person类的属性和方法

1.11.3 类和对象之间区别

  1. 类是一个对象的描述
  2. 对象是一个类具体实现,好比一个Peron类在实现过程中可以产出不同对象(例如:通过Person可以产出一个对张三或者李四的描述)

1.12 方法

1.12.1 方法定义的方式

  1. 无返回值+无参数的方法定义
  2. 有返回值+无参数的方法定义
  3. 无返回值+有参数的方法定义
  4. 有返回值+有参数的方法定义

1.12.2 无返回值+无参数的方法定义

  1. 语法结构

修饰符 void 方法名称() {

  //程序代码

}

 

  1. 具体实现

1.12.3 有返回值+无参数的方法定义

  1. 语法结构

修饰符 返回类型 方法名称() {

 //程序代码

 return 返回值;

}

 

1.12.4 无返回值+有参数的方法定义

  1. 语法

修饰符 void 方法名称(参数, 参数, ...) {

  //程序代码

}

 

  1. 参数是什么意思:一个变量的定义
  2. 参数的作用:在执行方法时候可以接收值

1.12.5 有返回值+有参数的方法定义

  1. 语法

修饰符 数据类型 方法名称(参数,参数, ....) {

   //程序代码

   return 返回值;

}

 

1.13 面向对象中的变量应用

1.13.1 面向对象中的变量的叫法

  1. 全局变量,叫作属性
  2. 局部变量,在方法里面定义变量叫作局部变量
  3. 参数

1.13.2 变量作用域

  1. 全局变量作用域:在整个类中有效,换句话说类里面的所有方法都可以使用

  1. 局部变量作用域:在方法里面有效

  1. 参数:在方法里面有效(局部变量),但是它可以接收传递的值

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!