今天给大家带来的是初级Java基础部分的知识:包括初识Java、变量、常量、数据类型、运算符、各种选择结构、循环结构、数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细,值得收藏(๑•̀ㅂ•́)و✧!!!
另附有各种案例的源代码(可以直接用O(∩_∩)O~)!!!仔细看完它,扎实的基础不再是空谈,万丈高楼平地起,当有了扎实的基础知识,后面学习面向对象以及项目的开发时,压力就减少了很多,所以基础知识不能被轻易的忽略!!!
一、初识Java
使用记事本开发程序的步骤(注意:整个操作过程都是英文):
1 编写源程序
首先新建一个文本文件,修改其后缀名为“.java" ---->然后再里面编写我们需要的代码
public:公共的公开的,处处可以访问。
class:类,类别,类似狗狗类,电脑类等。
HelloWorld:类名称,有一个要求,必须和文件名称保持一致
public static void main(String[] args){} ---->>> 入口方法,所有需要运行的代码都需要放到这里来,固定写法
static:关键字(计算机中已经使用的名字,我们就不能再使用)
void:返回值类型,void表示没有返回值
main:是入口方法的方法名
易错点:
①大括号要成对出现
②String中的”s”要大写
③我们在每一句话之后都需要使用英文的分号结束
④System中的”s”需要大写
⑤类名需要和文件名保持一致
所有的输出内容需要在引号里面
2 编译源程序
因为编写的是我们人写的,但是计算机是看不懂的,所以需要一个“翻译” 编译成一个 ".class" 结尾的文件(半机器语言)。我们在dos命令中进入到文件所在目录,输入命令 javac xxx.java 类编译同时会生成一个以“class”结尾的字节码文件编译后会出现一个.class文件
3 运行
编译成功之后,即可运行,输入 java xxx 即可.在控制台即可出现在打印语句中双引号中的内容了(所有需要打印的内容都需要在双引号中)win+r:输入cmd进入dos,在数据图中的命令即可
符号的含义:
\t:一个制表符的空格
\n:换到下一行的初识位置
注释的作用:
解释说明,不会被编译运行
单行注释: //
多行注释: /* */
文档注释: /** */
二、变量,常量,数据类型和运算符
1.变量
引入:人的计算是在大脑中进行的,计算机的计算是在内存中进行的,内存就好比酒店根据人员的多少开辟适当大小的空间(单人OR双人,来存储各种数据。
诞生:内存中的每个空间都是相互独立的,且都有自己的地址值。
找数据:存入数据并不是目的,我们最主要的是存入了方便之后的使用。每个空间都是有其地址值,地址值是相对比较长且不好记忆的,我们可以像宾馆样给每个空间(房间)起一个名字,这个空间有自己的名称(变量名)和类型(数据类型)
1.1 定义:
一个存储空间的表示,其值是可以变化的。(例如买了一双鞋,鞋盒用来孵小鸡,鞋盒就是变量,鞋子和小鸡是里面的值。)
通过变量名可以简单快速的找到它存储的数据!!!
1.2 为什么使用变量
案例:
1.3 使用步骤:
第一步:声明变量(声明变量的时候变量名不能重复)
即根据数据类型在内存申请空间
数据类型 变量名;int money;(int是数据类型,money是变量名)
第二步:赋值
即将数据存储在对应的内存空间
变量名=数值; money=1000;
上面两步可以合二为一
int money =1000;
其含义是:在内存中开辟了一个int类型的空间,给其命名为money,并为其赋值为1000;
第三步:使用。即取出数据
注意:
在声明变量的时候变量名不能重复
当在程序中使用“+”的时候,符号左右两侧如果有一个数据是字符串则将两个值拼接(如果后面有多个“+”则将多个值拼接),如果都是数值型则计算和
1.4 命名的规则
一个好的命名规范是一个程序员必备的素质,不遵守规范不一定会错,但一定会被鄙视。(凡是自己起的名字都要遵守以下规范)
1. 以数字,字母,下划线和$符号组成,其中不能以数字开头;
2.不能和java中的关键字重名;
3.尽量遵守见名知意和驼峰命名(有多个单词首个单词首字母小写后面单词首字母大写)规则。
1.5 常见错误
未声明且赋值直接使用
标记位置序错误
在同一个作用域中声明了相同名字的变量名
2.常量
2.1 为什么使用常量
在实际开发和生活中有些值是一开始定义了在后面就不能修改的,如:圆周率
2.2 定义:
一个存储空间的表示,其值是不可以发生变化的。
final修饰常量,final修饰的值在声明的时候就赋值且后面不能改变(在数据类型前加final 如 final int)
2.3 优点:
一旦定义后期不能修改,所以其是相对安全的
2.4 命名规则:
优点:
一旦定义后期不能修改,所以其实相对安全的
推荐做法:
常量名通常大写;
只能被赋值一次,通常定义时即对其初始化
常量名都要大写,如果是多个单词组成,则使用下划线分割
3.数据类型
分类:
3.1 基本数据类型:
1、数值型
1)整型(可以存放整数):
byte(1个字节)
short(2个字节)
int(4个字节) (默认使用)
long(8个字节)
2)浮点型(表示小数):
float(4个字节)
double(8个字节) (默认使用)
2、非数值型
1)字符型—————需要给值加上单引号,只能存一个字符
char(2个字节):本质上是一个整数,是字符的Unicode码值
2)布尔型————结果只有两种 true/false
boolean
3.2 引用数据类型:
1)String:可以存储多个字符使用双引号引起来
2)数组
3)枚举
4.运算符
分类:
4.1 赋值运算符:
赋值符号:=将右边的值赋给左边的变量
变量名 =表达式;
表达式举例:
4.2 算术运算符:
符号:+ - * / % ++ --
++放在变量前指先加1在使用;放在变量后指先使用在加1
--放在变量前指先减1在使用;放在变量后指先使用在减1
%指求余数
num+=2;(意思为num=num+2;)
4.3 关系运算符
注意:
= 为赋值运算符,== 等于运算符
表达式返还给我们的结果类型都是boolean 类型
4.4 逻辑运算符:
&& 一假必假
|| 一真必真
4.5 三目(元)运算符(条件运算符):
语法:
boolean表达式? 表达式1:表达式2;
当boolean表达式的结果为true的时候 执行表达式1
当boolean表达式的结果为false的时候 执行表达式2
返回值的数据类型需要和执行的表达式的数据类型一致
运算符优先级
5.类型转换
5.1 自动类型转换
好比生活中有两个水杯,一个大的一个小的,如果将装满水的小杯中水倒入空的大杯,是可以的,类似于这样的场景在java中称之为自动类型转换
案例1:
案例2:
规则:
①在整个表达式中,如果有double数据类型的话,则整个表达式的结果会自动的提升为double类型
②在自动类型转换的表达式中数据类型需要兼容。如:都是数值型
③目标类型要大于原类型
5.2 强制类型转换
好比生活中有两个水杯,一个大的一个小的,如果将装满水的大杯中水倒入空的小杯,是可以的但是会溢出,类似于这样的场景在java中称之为自强制类型转换
语法:
数据类型 变量名=(数据类型)(表达式);————是先运算表达式,然后将结果转换
如:int seconde=(int) (first+duo);或int seconde=(int) (first)+duo;————先将first转换为int类型在计算,最后将结果转换为int类型
缺点:丢失精度,尤其在财务等方面慎用!!!(double转int 丢失的是小数点后面的所有值不是四舍五入)
案例1:
案例2:
5.3 boolean类型
使用场景:
当我们遇到 真 或者 假 , 是 或者 否,类似于这样两种情况的时候可以使用boolean类型的值
boolean 类型的值:false 和 true
如何使用:
案例问题:从控制台输入张三同学的成绩,与李四的成绩(80分)比较,输出“张三的成绩比李四的成绩高吗?“ 的判断结果
6.Scanner
引入:之前我们都是在程序中定义变量,但是如果想让用户从键盘输入怎么办呢?就需要使用Scanner
作用:接收用户在键盘输入的值
使用步骤:
①导包
import java.util.Scanner; / import java.util.*; (java.util是包名 Scanner是类名,
如果用*则表示取java.util包下的所有类,两种方法都行)
ps:在Eclipse中导包的快捷键:Ctrl + Shift + O。初学者不建议导,熟练之后再运用快捷键更佳!!!
②创建Scanner 对象
Scanner tx = new Scanner (System.in);
③使用 常用方法
接收int型 int age= tx.nextInt();
接收double型 double score=tx.nextDouble();
接收String类型 String name=tx.next();
注意
第二步中新建的Scanner中用的什么名(tx)第三步中就用什么名
由于工具的原因,在编写提示语的时候将ln去掉;如将System.out.println("请输入年龄:");的ln去掉即为System.out.print("请输入年龄:");
7.包的使用
新建的包都使用小写字母组成,不能有中文或者特殊符号
新建的包使用公司域名去掉3w其他内容倒写,如 www.kgc.cn cn.kgc.公司定义
新建的每个类我们使用的每个单词的首字母大写
在每个类中都会有且只有一个 package+包的名字(且在代码的第一行)
三、程序选择结构
3.1基本选择结构
语法:
if(布尔类型的条件){
如果条件为真,则执行
}
条件为假的时候执行大括号后面的内容
if () { // 括号里必须是布尔条件表达式
//代码块,只有一条语句的时候大括号可以省略,但是不建议那么做
}
流程图
案例:
如果张浩的Java考试成绩大于98分,张浩就能获得一个MP4作为奖励
3.2复杂程序结构
主要是和我们的各种运算符相互结合使用
如:张浩的Java成绩大于98分,而且音乐成绩大于80分,老师会奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也会奖励他
if-else
为什么使用if-else ?
使用传统的if选择结构也可能完成如果否则之类的问题,但是可能造成代码的冗余,浪费时间。
案例1:
案例2:
所以我们使用 if-else
语法:
流程图:
案例:
多重if选择结构
为什么使用多重if
在我们的之前学习过程中,都是判断两种情况,不是怎么样就是怎么样。在实际生活中是可能出现区间选择的,如:分数的评级
成绩>=80 :良好 成绩>=60 :中等成绩<60 :差
类似这样,单个的if无法完成,多个if又比较麻烦,那就可以使用我们即将学习的多重 if
语法:
流程图:
案例:
在我们执行的程序过程中,程序是自上而下执行的,所以条件判断的时候,会在第一个判断条件满足的时候停下并执行,后面的内容就不会再执行了
所以,在条件判断的时候,条件的语句顺序不能随便的写,要按照一定的顺序
嵌套if选择结构
案例引入:
语法:
流程图:
案例:
问题:学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组
分析:如果进入决赛 再看是男还是女,如果是男进入男子组女就进入女子组。这就使用到了嵌套if选择结构
案例2
2.
3.
switch选择结构
语法:
注意:
switch后面只能跟6种类型
3种整数型:byte、short、int
两个字符相关:char、String
一个枚举型
字符串需要在jdk7.0之后才能使用
案例1:
以上是使用多重if选择结构的完成,但是从代码的结构上看,显得代码冗余,结构复杂,有多次的等值判断。
为了解决上述问题,我们引出switch的选择结构
if选择结构和switch选择结构的使用场景
if选择结构我们一般都是使用在区间判断上,而switch选择结构一般是作用在等值判断
案例2:
switch常见错误
常见错误1:
常见错误2:
常见错误3:
比较switch和多重if选择结构
相同点
都是用来处理多分支条件的结构
不同点
if多用于区间的判断
switch用于等值条件的判断
用switch能做的,用if都能做,但反过来则不行
选择结构的总结
到目前为止我们学习过五种选择结构:
基本if选择结构: 处理单一或者组合条件的情况
if-else选择结构:处理简单的条件分支情况
多重if选择结构:处理复杂的条件分支情况
嵌套if选择结构:用于较为复杂的流程控制
switch:选择结构:多重分支并且条件判断是等值判断的情况。
如何处理系统异常
使用hasNextInt()解决问题
四、循环结构(重点)
为什么使用循环:
在达到同样的效果的同时可以用较简洁的代码
使用循环即可解决
概念:
一直重复做的有开始有结束的事
循环的特征:
循环条件:开始结束的条件
循环操作:一直需要重复做的事
循环变量:能够对循环条件的结果产生影响的量
4.1 while循环
特点:
先判断,后执行
如果循环条件开始就不符合的时候,循环操作一遍也不会执行
语法:
流程图:
案例1:
案例2(while循环进阶):
4.2 do—while循环
为什么需要使用do—while循环?
在生活中往往会有一些事情是需要我们先做然后再去判断的。如:期末考试之前需要先学习一个学期
语法:
执行特点:
先执行,后判断。
条件为假,也至少执行一次循环操作
案例:
while 和do...while的区别:
不同点:
语法不同;
执行次序不同;
初始情况不满足条件时;
while循环一次都不执行;
do-while循环不管任何情况都会执行一次。
4.3 for循环(难点)
为什么使用for循环:
有很多问题用我们之前的whie循环是可以的,也可以使用我们现在for循环,类似于运动员有的擅长跑,有的擅长短跑,但是都是长跑的。我们的循环也是一样,只是他们都有自己擅长的领域。对比for循环的结构和while循环的结构,其实结构都是一样
的只是每个部分所在的位置有所不同,之前所在的是多行的内容现在放到一个括号里面了。
代码更简洁:while循环中有的表达式在for中都有
适用场景:循环次数固定的情况下使用
语法:
易错点:
初识化循环变量可以省略但是需要在for上面写
循环条件和修改循环变量的值不能省略否则会死循环
初始化循环变量、循环条件、修改循环变量的值都不写的话(分号不能省)会死循环
案例:
4.4 break和continue的不解之缘
含义:
break:终止本循环,继续向后执行
continue:终止本次循环,继而执行下一次的循环操作
break作用:
改变程序控制流
用于do-while、while、for中时,可跳出循环而执行循环后面的语句
break通常在循环中与条件语句一起使用
continue作用:
中断此次循环,继续下次循环
continue通常与条件语句一起使用加速循环
案例:
break:
continue:
对比break和continue:
使用场合:
break常用于switch结构和循环结构中
continue一般用于循环结构中
作用(循环结构中):
break语句终止某个循环,程序跳转到循环块外的下一条语句
continue跳出本次循环,进入下一次循环
Ps:补充:return 结束当前方法的执行并退出,返回到调用该方法的语句处。
4.5 调试
为什么需要调试 : 在程序的开发过程中难免会有错误,但是我们不好发现和定位错误,所以我们需要调试
怎么调试,程序的执行一闪而过我们想让其慢点,就可以使用断电。步骤为:
1.分析错误,设置断点
2.启动调试: debug as
3.单步运行: F6
4.观察变量.
5.发现问题,解决问题
五、数组(重难点)
为什么需要使用数组:
当有多个数值的时候.需要定义多个变量,较为麻烦,使用数组的话只需要定义一个变量直接开辟一串空间
什么是数组:
数组是一个变量,存储相同数据类型的一组数据
数组和变量的对比:
变量:声明一个变量就是在内存中开辟一个合适大小的空间
数组:声明一个数组就是在内存中开辟一连串的连续空间
数组基本要素:
标识符:
数组的名称,用于区分不同的数组
数组元素:
向数组中存放的数据
元素下标:
对数组元素进行编号,从0开始,数组中的每个元素都可以通过下标来访问
元素类型:
数组元素的数据类型
注意:
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组长度和类型一旦定义不会改变
数组中的所有元素必须属于相同的数据类型
如何使用数组:
1、声明数组
数组类型 数组名 [];
数组类型[] 数组名; //常用写法
int[] a;
int a[];
String[] name;
2、分配空间(告诉计算机分配几个连续的空间)
数组类型[] 数组名 = new 数据类型[大小];
a=new int[5];
3、赋值(向分配的格子里放数据)
数组名[元素下标] =要赋的值;
a[0]=8;
赋值:
一、边声明边赋值:赋值的时候给了几个值,数组的长度就是多少
数组类型[] 数组名 = {x ; y ; z};
int[ ] score = {89, 79, 76};
数组类型[] 数组名 = {x ; y ; z};
int[ ] score = new int[ ]{89, 79, 76};
二、动态的从键盘录入信息并赋值(需要先定义数组长度)
4、处理数据
a[0]=a[0]*10;
案例:
5、常见错误
编译出错:没写明数组的大小:int [] score= new int[];
编译出错:数组下标越界:int [] score= new int[2];
score[0]=11;
score[1]=11;
score[2]=11; //下标越界了
编译出错:数组的声明和赋值在多行:
int [] score;
score={11,22,33,21};
6.、Arrays类
案例:
7、多维数组
为什么学习多维数组:如遇5个班各5名学生的信息
概念:从内存角度看只有一-维数组,java是支持多维数据的但是二维以上的数组很少使用,只要用二维数组
二维数组:其实是数组的数组
语法:
六、equals
最后再补充一点关于equals 和 == 的区别哈!!!
== 和 equals 的区别是?
==
既可以比较数值类型,也可以比较引用数据类型。当比较的是数值类型的时候比较的是值比较的是引用数据类型的是后,比较的就是地址值
equals
如果没有对equals方法进行重写的时候,比较的方式和==是一样的,如果重写的则按照重写的方式进行比较
在使用equals 的时候我们将肯定有值的变量写在前面,避免空指针异常的出现
案例:
七、循环结构进阶
1、为什么使用二重循环:
重复做的事使用循环那如计算3个班级各5名学生的成绩平均分就需要两个循环
2、什么是二重循环:
简单来说,就是循环里面套一个循环
3、方式:
特点:外层循环一次,内层循环一遍
4、如何使用二重循环:
案例1:
案例2(进阶):
1.打印各种图形(矩形、直角三角形、倒直角三角形、等腰三角形、平行四边形、菱形、数字菱形、空心菱形)
4. 在数组中添加、修改、删除数据
5.冒泡排序、选择排序、插入排序的代码和对比
至此,Java基础语法部分大致完成,下面该是Java的重难点:面向对象!!!下次会给大家带来更为详细的关于面向对象的内容,期待小伙伴们的收藏、支持和评论,加油!!!
喜欢前端、后端java开发的可以加+qun:609565759,有详细视频、资料、教程,文档,值得拥有!!!希望可以一起努力,加油ヾ(◍°∇°◍)ノ゙!!!