Java最简单最全入门基础笔记(不简单,不全你打我)
Posted ζั͡ޓއއއ 丶阡陌尘弥_Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java最简单最全入门基础笔记(不简单,不全你打我)相关的知识,希望对你有一定的参考价值。
刚开始学Java的时候,大家都可能一头雾水,不知道从何处学起,这里跟大学分享下(仅仅只供初学者学习,大佬勿喷)
另外这里还整理了所有Java的基础单词, 下面是链接
Java第二阶段学习笔记, 下面是链接
这个是交流群, 大家有兴趣的可以加下
一、初始Java
1.生活中的程序:
从起床到教室上课的过程
起床》洗漱》穿衣打扮》出宿舍》吃早餐》到教室
按照特定的顺序去完成某一件事的过程我们叫做生活中的程序
2.计算机中的程序:
一组有序指令的集合,需要和计算机交流就要使用计算机的语言,Java就是其中的一种
3.Java能做什么:
1、开发桌面应用程序,比如:QQ、酷狗
2、开发Internet应用程序,比如:淘宝、天猫
4.Java技术平台:
1、Java SE:标准版,java的技术与核心,开发桌面应用程序
2、Java EE:企业版,提供企业家项目的解决方案,开发网页应用
5.安装JDK:
JDK:Java的一个核心工具包
JRE:Java的一个运行环境(表示Java除了可以在Windows平台运行外,还可以在苹果系统运行)
环境变量: 告诉计算机运行的.java运行程序在哪里
6.开发Java程序的步骤:
1、编写一个Java源程序,新建记事本,改后缀名为:.java
2、编译Java源程序,语法:javac源文件名.java,编译成功后会生成一个.class的字节码文件
3、运行Java程序,运行的是.class的文件
注意:
Java严格区分大小写
例如:
System.out.println () //打印之后换一行,先打印再换行
System.out.print () //打印之后不换行
7.转义字符:
1、使用"\\n" 进行换行
2、使用"\\t"空格一个制表符的位置,也就是8个英文字母的长度
8.Java中的注释:
1、//注释内容,表示单行注释
2、/* 注释内容 */,表示多行注释
3、/** 注释内容 */,表示文档注释
注意: 注释的内容是不会被编译的
9.Java的编码规范:
1、遇到大括号 就进行一次缩进,缩进距离一个tab键的长度
2、每一个 大括号单独占一行,表示一段语句的结束
3、; 表示每行语句的结束,每一行只写一句代码
10.使用开发工具开发Java程序的步骤:
1、新建一个Java工程
2、选中新建的Java工程,选中src文件夹,鼠标右键选择new,再选择class,记得勾选上public static void main这一项,然后点击Finish,就会自动生成Java源程序的框架
3、在框架中编写Java源程序
4、编译Java源程序,开发工具会自动编译
5、最后右击鼠标,选择Run As中的第一个选项,运行Java源程序
二、变量、数据类型和运算符
1.每个程序都只有一个入口,也就是只有一个main方法,只有一个程序可以打开QQ,其他的地方都打开不了
2.程序没有运行是存储磁盘上,运行在内存中
3.酒店中入住:
1、订购房间(根据不同的人数订购不同类型的房间)
2、入住
4.变量的概念:
内存根据不同类型的变量开辟不同长度的空间
例如:
酒店 相当于 内存 --->>> 房间 相当于 变量
入住的人相当于数据(变量值)
房间类型 相当于 数据类型(数字还是文字)
房间号相当于变量名(名不同)
5.变量名:
用于快速在内存空间中找到变量而取的名字
6.数据类型:
数值型:
1、整形(int):用于存储整数,整数的类型
例如: 123 , 456 , 789等,其范围:-32768 ~ 32767
2、byte字节型
3、short短整型
4、long长整形
其取值范围与所占字节比较:
long > int > short > byte
5、float单精度浮点型
6、double双精度浮点型
以上两种类型皆存储小数
例: 1234.5 , 3.14等
非数值型:
1、字符型(char):
用于存储单个字符,都需要使用英文状态下的单引号括起来
例如:
‘天’、‘地’、‘道’、‘德’
2、字符串型(String):
用于存储一串字符,存储0~n个字符,都需要用英文状态下的双引号括起来
例如:
“我的名字是张三”,“我的爱好是打游戏”
7.变量名的命名规则:
1、只能使用英文字母、、$三个开头,后面的可以使用数字、字母和、美元符号
2、不能使用Java语言中的关键字命名变量名
3、采用见文识意的方式命名,采用驼峰命名法ageOfStudent,多个字母命名时,第一个字母的首字母小写,后面字母的首字母大写
8.变量的使用:
1、声明变量,就是在内存开一个空间
语法
数据类型 变量名;(空格和分号都不能少)
例如
int Student_Num;
2、变量赋值,即将数据放在开辟的空间
语法
变量名 = 变量值;
例如
Student_Num=202124;
3、输出变量值
例如
System.out.println(Student_Num);
9.运算符的使用:
1、赋值运算符(=)
将等号右边的赋值给左边
2、拼接运算符(+)
将+左右两边的连起来
3、算术运算符(+ 、- 、* 、/ 、%)
算术运算又称四则运算
其中%(取模运算):除以一个数得到余数,就是求余数的运算的运算
10.从键盘扫描输入的值:
1、首先找到有扫描仪的商店,然后使用如下语句将此扫描仪导入到Java程序中
import java.util.Scanner;
此语句必须写在Java程序的最上面
2、给这台新购的扫描仪取个名字,使用如下语句
Scanner input = new Scanner(System.in);
3、使用扫描仪的扫描功能
如果扫描整数:使用input.nextInt();
如果扫描小数:使用input.nextDouble();
如果扫描字符串:使用input.next();
11.类型转换:
自动类型转换:
1、必须两种类型互相兼容,比如:都是数值类型int和double,double和float
2、转换成的类型一定要比被转换的类型要大,比如:int转换成double,float转换成double
12.强制类型转换:
语法如下
数据类型 变量名 = (数据类型)变量名;
例如
double b = 3.14;
int a = (int)b;
1、同类型的强制类型转换
比如
int a = (int)10.9;
2、不同类型的强制类型转换
比如
int b = (int)‘a’;
只有char和int可以,通过ASCII码表去转换
13.运算符:
1、赋值运算符 =,将右边的值赋给左边
2、算术运算符+、-、、/、%,数学运算一样,*、/、%,后+、-
3、关系运算符(比较运算符):>、<、>=、<=、==、!=
4、逻辑运算符:boolean类型(布尔类型):用于比较运算,只有两个值(true和false)默认false
14.运算符的优先级:
1、最高优先级,英文状态下的小括号()
2、最低优先级,赋值运算符=
3、算术运算符>关系运算符>逻辑运算符>赋值运算符
三、选择结构
1.if选择结构
语法如下
if(要满足的条件)
//如果条件为true的时候,进入大括号中
//满足条件之后得到的结果,不满足条件不会去执行
//如果条件为false的时候,绕过大括号执行外面的
条件只能是boolean类型的数据
2.逻辑运算符:
&&(shift+7):
and符号,并且的意思,同时满足连接前后条件才为true,有一个不满足为false
||(shirt+):
或者符号,只要前后两个条件一个为true,整个表达式就为true,同时为false才为false
!(shirt+1):
非的意思,就是取反,如果表达式为true,使用非就为false
3.if-else选择结构:
语法如下
if(要满足的条件)
//满足条件得到的结果
else
//不满足条件的得到的结果
4.产生一个随机数:
1、首先要找到一个有随机数产生器的商店,通过如下语句实现
语法
import java.util.Random;
//放于程序最上方
2、然后购买一台随机数产生器并取一个名字,通过如下语句实现
语法
Random ran = new Random();
3、使用这台随机数产生器的功能区产生随机数,通过如下语句实现
语法
ran.nextInt(数字);
例如
ran.nextInt(10) //表示产生一个0~9之间的随机数
ran.nextInt(10) +1 //表示产生一个1~10之间的随机数
5.多重if选择结构:
语法如下
if(要满足的条件1)
//满足条件1得到的结果
else if(要满足的条件2)
//默认不满足条件1
//满足条件1得到的结果
else if(要满足的条件n)
//默认不满足条件2
//满足条件n得到的结果
else
//默认不满足条件n
//不满足所有条件得到的结果
只要找到一个满足的条件,执行完之后,结束选择结构
6.嵌套if选择结构
语法如下
if(要满足的条件1)
//满足条件1得到的结果
if(要满足的条件2)
//满足条件2得到的结果
else
//不满足条件1得到的结果
注意:
两个等号只能够比较数值类型,若要比较字符串是否相等,需要使用.equals(“要等于哪个字符串”);
比如:
sex.equals(“男”);
10 == 10
四、循环结构
1.循环结构:
举个例子:
打印50份试卷,是从第1份开始打印,打印到第50份结束,重复打印试卷的过程
绕操场跑10圈,从第1圈开始,到第10圈结束,重复跑步的过程
做100道编程题,从第1题开始,到第100道结束,重复做题的过程
2.循环的概念:
重复完成某一件事情或者某一个操作,有一个开始位置和结束位置就叫做循环
3.循环的特点:
1、循环条件:也就是满足某个条件下才做重复的操作
2、循环操作:也就是重复所做的事情或者操作
4.while循环的语法:
while(循环条件)
//满足条件的时候所做的循环操作
//特点:先判断,再执行
使用while循环的步骤:
1、确定是否存在重复操作
2、分析出循环条件和循环操作分别是什么
3、套用while循环语法写出循环结构
4、检查循环是否能正确退出
5.do-while循环结构的语法:
do
//循环操作
//特点:先执行循环操作,再进行循环条件判断(先执行,再判断)
while(循环条件);
6.while循环和do-while循环的差别:
1、循环的次序不同,while循环是先判断,再执行,do-while是先执行,再判断;
2、while循环在初始值不满足循环条件的时候一次都不会执行,do-while循环在初始值不满足循环条件的时候至少执行一次
7.程序调试:
断点调试的步骤:(每次调试后取消掉断点)
1、设置断点:在左侧边栏的位置点击鼠标左键两次,可以生成一个断点
2、进入调试模式:点击右键,选择debug as进入debug调试模式,程序会在设置断点的地方停下来
3、单步执行,也就是一行一行的执行代码,按F6单步跳过执行代码
4、观察变量值的变化
5、找出错误的位置
6、改正错误
7、运行看结果是否正确
8.for循环结构:
语法如下
for(表达式1;表达式2;表达式3)
//表达式1:循环从哪里开始,也就是循环的初始值,比如:int num = 1
//表达式2:循环的条件,也就是循环到哪里结束,比如:num <100
//表达式3:计数器,也就是每循环一次,初始值产生怎样的变化,比如:num++
//每个表达式之间用分号隔开,每个表达式都可以不写,但是分号不能省略
for循环的执行顺序:
①先去执行表达式1,也就是先去找初始值
②第二步去执行表达式2,也就是去找循环条件
③第三步去执行循环操作
④最后才去执行表达式3,也就是最后才实现初始值变化的过程
表达式1和表达3中可以写多个,表达式2,条件只能有一个
9.跳转语句的使用:
break关键字:(通常和if选择结构一起使用)
在switch使用break表示结束switch选择结构去执行选择结构外的代码
在循环中使用break表示结束循环结构去执行循环结构外的代码
continue关键字:(通常和if选择结构一起使用)
continue只能够在循环结构中使用
在循环中使用continue表示结束当前这一次循环,然后开始下一次循环
使用场合:
break常用于switch结构和循环结构中
continue一般用于循环结构中
区分二者差别:
break语句终止某个循环,程序跳转到循环块外的下一条语句
continue跳出本次循环,进入下一次循环
10.循环结构四要素:
1、初始值,也就是循环要从哪里开始
2、循环条件,循环要到哪里结束
3、循环操作(循环体),就是需要重复做的某些操作
4、计数器(迭代部分),就是每次重复之后,初始值要产生的变化
11.while、do-while和for循环的区别:
1、执行顺序不同
while和for循环:先判断,再执行
do-while循环:先执行,再判断
2、适用场景
for循环只适用于循环次数固定的情况
while和do-while循环无论循环次数是否固定都可以使用
五、数组
1.数组的概念
在内存中开辟的一串连续的空间,用来存储相同数据类型的
比如:鞋柜只会放鞋子,衣柜只会用来放衣服
2.数组的基本要素
1、标识符(数组名):数组的名称,用来区分不同的数组
2、数组元素:存放在数组空间中的数据
3、数组下标:对数组中的空间进行编号,区分每个空间,数组下标从0开始,可以通过数组下标找到对应的空间
4、元素类型:数组的数据类型
3.数组的定义和使用
1、声明数组:告诉计算机数组是什么类型
语法:
数据类型[] 数组名 或者 数据类型 数组名[]
例如:
String[] args;
int[] nums;
注意:
数组名的命名方式和变量命名方式一样
2、分配空间:告诉计算机要开辟一串连续的多长的空间
语法:
数组名 = new 数据类型[数组长度];
例如:
scores = new int[30];
注意:
第一步和第二步可以一起写
数据类型[] 数组名 = new 数据类型[数组长度];
3、赋值:向开辟好空间里面去存放数据
语法:
数组名[数组下标] = 数据;
例如:
scores[0] = 60;//表示将数组第一个空间存放了60这个整数
scores[1] = 80;//亦如此上的意思
或者直接声明数组时就进行赋值
语法:
数据类型[] 数组名 = new 数据类型[]数据1,数据2,数据n;
数据类型[] 数组名 = 数据1,数据2,数据n;
注意
如果在声明数组时就直接赋值,那么不要写数组长度
例如:
int[] scores = new int[]60,80,100,50,60,70;
亦或通过循环的方式动态的录入数据
例如:
for(int i = 0;i < 5;i++)
System.out.println("请输入第"+(i+1)+"名学生的成绩:");
scores[i] = input.nextInt();
循环从初始0开始,到数组的最大长度结束,每次加1
4、数据的使用:将存放在数组空间中的元素拿出来使用
例如:
for(int i = 0;i < 5;i++)
System.out.println("第"+(i+1)+"名的学生成绩为"+scores[i]);
使用循环的方式将存放在每个空间中数据拿出来使用
补充小知识:
数组名.length表示数组的长度
比如:int[] scores = new int[10];
scores.length = 10;//数组长度为多少,该值就为多少
4.数组的排序
使用Arrays类,使用Arrays的步骤如下
1、找到有Arrays的商店,语法:import java.util.Arrays;
2、Arrays是一个公用的工具,不需要够买,只要去使用就可以,
其排序方法:
Arrays.sort(数组名);
它会将该数组进行一个升序的排列
番外小知识
二重循环:在一个循环中再使用一个循环结构
循环特点:外层循环循环一次,内层循环循环一遍(也就是从开始到结束循环完)
例如
while循环,do-while循环和for循环之间可以相互嵌套,也就是说while循环可以放while
do-while和for循环,其他两种一样
5.二重循环中跳转语句的使用
continue:
如果continue在内层循环中,表示结束内层循环的本次循环,开始内层循环的
下一次循环,如果在外层循环表示结束外层循环的本次循环,开始外层循环的
下一次循环,也就是说,continue在哪一个循环的中,就结束哪一个循环的
本次循环,开始该循环的下一次循环。
break:
如果break在内层循环中,表示结束内层循环的整个循环,开始执行内层循环外面
语句,如果在外层循环中表示结束整个循环,也就是说,break在哪个循环中,结
束的就是哪个循环的整个循环。
六、类和对象
1.OO:
Object Oriented表示面向对象的意思
2.世界由什么组成:
水,陆地,草,人,动物,植物,楼房,汽车等等
由所有一切真实存在的东西组成,这些真实存在的东西就叫作对象
属性:就是对象所具有特征
方法:就是对象所执行的行为或操作
对象:用来描述真实存在事物的一个实体,由一组属性和方法组成
封装:对象的属性和方法通常封装在一起,共同体现事物的特性,两者不可分割
类:将对象共同的属性和方法抽取出来就是类,类是模子,定义对象所具有的属性和方法
3.类和对象的关系:
类是抽象的,对象是具体的实体
对象是类的一个实体,类是对象的抽象概念
4.定义一个类的步骤:
1、新建一个class,给这个class取一个类名,名字和你想要定义的类型一致,类名的取名方式,使用帕斯卡命名法,所有单词的首字母大写
2、定义类的属性
3、定义类的方法
5.使用定义好的类:
1、新建一个对象,语法:类名 对象名 = new 类名();
比如:Car car1 = new Car();
2、通过“.”操作符来使用这个对象的属性和方法
七、类的无参方法
1.定义类的方法:
语法如下
返回修饰符 返回值类型 方法名()
//具体实现方法的操作
比如
public void sayHello()
System.out.println(“你好”);
//具体实现方法的操作
1、访问修饰符(在哪些地方能够使用这个方法),public公共的,最高级别
2、返回值类型,执行完方法后能够得到什么数据void,表示没有返回值,也就是没有任何数据返回如果有数据返回,那么就需要使用return关键字返回一个数据,并且返回的数据类型和返回值的数据类型一致
3、方法名(),方法名表示方法的名字
4、方法体,具体实现方法的操作
2.编写类的方法步骤:
1、先定义方法的访问修饰符,先写没有返回值类型,定义方法名,方法名的命名采用见文识意的方式
2、定义方法体,也就是写具体实现方法的操作
3、判断方法是否有返回值,如果有,添加return关键字返回该数据,并修改返回值类型
3.方法的调用:
1、在同一个类调用同一类中的方法,只需要通过方法名()就可以指直接调用
2、在不同类中调用方法,需要先new一个需要调用方法的类的对象,然后通过对象名.方法名的方式去调用方法
提醒: 调用方法的时候,实际上就是去执行方法体中的代码
4.常见错误:
1、返回值数据类型必须和返回值类型一致
2、不可以返回多个值,也不能写多个返回值类型
3、定义方法不能够相互嵌套
4、程序逻辑代码(顺序、选择、循环结构)只能写在方法体中
5.面向对象的编程:
类的方法实现某个特定的功能,其他类不需要知道它如何实现,只需要知道它是用来干什么的
6.全局变量(成员变量):
它是指定义在类中的变量,它在类中的任意位置都可以被识别,比如:类的属性
1、作用域:作用在类中任意位置
2、初始值不同:如果没有给它赋值,系统会默认给它一个初始值
int类型为0,double为0.0,String为null
3、在同一个类中不允许同名存在
7.局部变量:
它是指定义在方法体中变量,它只能在该方法中被识别
1、作用域:作用在定义该变量的方法体中
2、初始值不同:必须给它赋值后才能去使用,系统不会给它赋初始值
3、在同一个类中,不同的方法中可以存在相同的命名,同名的两个变量没有任何关系在同一个类中,允许局部变量和成员变量命名相同,如果两个命名一样,在使用时,局部变量有更高优先级
八、类的有参方法
1.带参数的方法:
无参方法:在方法名()的括号中没有参数的方法
有参方法:在方法名()的括号中有参数的方法
2.定义有参方法的语法:
访问修饰符 返回值类型 方法名(参数1、参数2、参数3…参数n)
方法体(具体实现方法的过程)
3.参数:
实际就是声明的一个变量,声明的变量使用“,”隔开
在定义方法的时候,方法中的参数只是进行了声明,并没有赋值,这个参数就叫做形式参数,也就是形参
在调用方法的时候,对方法中参数进行赋值,这个参数就叫作实际参数,也就是实参
4.调用带参数的方法:
必须和定义方法的参数个数相同,并且数据类型必须一致,顺序也要和定义的位置一致
5.二次传递:
在调用方法的时候,传递一个参数值给该方法,然后在该方法中去调用了另外的方法,再将这个参数值传递给在该方法中调用的这个方法
6.对象数组:
自己定义的类型的数组,自己定义类型,若没有new一个对象,则它的初始就为null
7.包:
在windows中以文件夹的方式存在
1、将类分为几个类似于文件夹的单元
2、防止命名冲突,在同一个包不允许重复命名,不同包可以重复
3、可以对类中数据中进行一个保护作用
声明包—
语法:package 包名; 必须为java源文件中第一条非注释语句
包名—
1、通常由小写的英文字母组成,不能以圆点开头或结尾
2、开头一般是一个顶级域名cn,com,org,net
3、后续部分一般由公司名称、部门名称、小组名称、项目名称
导入包
语法
import 包名;
注意:
导入包,可以将在这个包中的所有类导入到我们这个类中,导入后才能使用该包中的类
通过ctrl+鼠标左键点击进入定义方法的位置
八、字符串
1.字符串:
就是由一个或多个字符组成的一连串字符
2.声明字符串:
1、直接声明,比如:String name = “张三”;
2、使用对象的方式,new一个String类的对象,比如:String name = new String(“张三”);
3.栈和堆的区别:
栈
用来存储较小的数据,例如:int、float、double等数据类型,离访问位置比较近
堆
用来存储较大的数据,例如:String、数组、自己定义的类型等,离访问位置比较远
4.引用数据类型:
通过在栈中的地址去引用存储在堆中的数据
注意:
只要使用了new关键字,就表示在堆中开辟了一个新的内容,然后在栈中留下了一个地址
String中的值是不可变的
5.比较字符串:
1、“==” 运算符比较的是存储的地址,引用的类型地址不相同,不能使用比较
2、equals比较的是存储的数据,将数据一一比较,字符串使用.equals比较是否相等
3、equalsIgnoreCase()忽略大小写比较字符串是否相等
4、toLowerCase()将字符串中所有字符转化为小写
5、toUpperCase()将字符串中所有字符转化为大写
6.获得字符串长度:
字符串名.length,获得字符串长度,每个字符就是一个长度
7.字符串的拼接:
1、使用拼接符+进行拼接
2、使用.concat()方法进行拼接
8.字符串的查询和提取:
indexOf("@qq")、indexOf(’@’),查询第一个字符出现的位置
lastIndexOf(‘7’)、lastIndexOf(“77”),查询最后一个字符出现的位置
查询:字符串名.indexOf(需要查找字符串名),返回一个int类型的数据,第一个数从0
开始,返回字符串第一个字符所在位置,找不到指定的字符串返回-1
9.提取:
1.substring(8)提取第9个字符串后面的所有字符串
2.substring(8,12)提取从第8个字符到第11个字符,开始的位置从0开始数起,结束的位置
从1开始数起
3.trim()忽略字符串前后的空格,中间不能忽略
10.字符串的分割:
.split(以什么为分割的字符),返回一个String的数组,将分割的每个字符串放到这个数
组中
11.字符串的替换:
1、.replaceAll(表示替换前的字符,表示替换后的字符),返回一个String的数据
2、StringBuffer类,是一个可变的字符串类型,语法:StringBuffer sb = new StringBuffer(“小林”)
3、StringBuffer的拼接:.append(“需要追加的字符串”);追加的时候不会新开辟空间
4、StringBuffer的插入字符:.insert(插入的位置,要插入的字符)
有什么问题欢迎大家提出来 ♪(´○`)o团结就是力量
Q:2694674917
V:asd2069696039
ALL-OUT YOUTH
以上是关于Java最简单最全入门基础笔记(不简单,不全你打我)的主要内容,如果未能解决你的问题,请参考以下文章
看不懂你打我全网最全的spring dispatcher请求流程解析不看就亏了
面试必问的 volatile 关键字,通俗易懂,看完还不懂你打我。