JavaSE JAVA基础总结 (上)
前言: 学习java有了两年半了,之前从没在CSDN上发布,这也是将之前所学习的javaSE的笔记,记录在CSDN上,同时这是是我的第一篇博客,如有写的不对的地方,欢迎大佬斧正!!!
java基础总结下在这:JavaSE JAVA基础总结(下) 我的学习笔记
一、Java基础语法
1.数据类型
数据类型的作用:数据类型就是用来约束变量储存数据的形式 。
数据类型 变量名称 = 初始值;
关键字 | 数据类型 | 取值范围 | 内存占用 |
---|---|---|---|
byte | 整形 | -128~127 | 1个字节 |
short | 整形 | -32,768~32,767 | 2个字节 |
int | 整形 | -2,147,483,648~2,147,483,647 | 4个字节 |
long | 整形 | -9,223,372,036,854,775,808到9,223,372,036,854,775,807 | 8个字节 |
flaot | 浮点数 | 大约±3.4E+38(有效数字大约6~7位) | 4个字节 |
double | 浮点数 | 大约±1.7E+308(有效数字大约15位) | 8个字节 |
char | 字符 | 0~65535 | 通常是1个字节,Java中占用2个字节 |
boolean | 布尔 | true false | 1个字节 |
除了以上的基础类型还有引用数据类型基本上可以分为三类:
类Class引用,接口interface引用 ,数组引用;可以是我们创建的,也可以是java库中的
2.运算符
算数运算符:
运算符 | 名称 | 说明 |
---|---|---|
+ | 加法运算符 | 可以求和,可以拼接String类型的字符串 |
- | 减法运算符 | a=-a 取反, a-b 相减 |
* | 乘法运算符 | 相乘 |
/ | 除法运算符 | 求商 |
++ | 自增运算符 | a++ 先取值再自增1,++a 先自增1再取值 |
– | 自减运算符 | a-- 先取值再自减1,b–先自减1再取值 |
关系运算符或比较运算符:
运算符 | 名称 | 说明 |
---|---|---|
> | 大于 | 检查左边的值是否大于右边的值 |
< | 小于 | 检查左边的值是否小于右边的值 |
>= | 大于等于 | 检查左边的值是否大于或等于右边的值。 |
<= | 小于等于 | 检查左边的值是否小于或等于右边的值 |
== | 等于 | 检查两个值是否相等 |
!= | 不等于 | 检查两个值是否不相等 |
逻辑运算符:
运算符 | 名称 | 说明 |
---|---|---|
&& | 逻辑与 | 当且仅当两个操作数都为true时,结果才为true。 |
|| | 逻辑或 | 如果任一值为为true,结果就为true。 |
! | 逻辑非 | 真值或假值转换为对应的相反值 |
赋值运算符:
运算符 | 名称 | 说明 |
---|---|---|
= | 基本赋值运算符 | 将一个值或表达式的结果存储在变量中 |
+= | 加法赋值 | 右边的值加到左边的的值上,结果存入左边 |
-= | 减法赋值 | 两变量相除 |
*= | 乘法赋值 | 两变量相乘 |
/= | 除法赋值 | 求值,如a/b的值 |
% | 取模赋值 | 求模,如a%b的模 |
条件运算符(三目运算符):
boolean表达式 ?表达式1:表达式2; 表达式为true执行表达式1,表达式为false,则执行表达式2。
如 1 > 2 ? a = 1:a = 2; 此时a的值为 2。
3.选择结构
选择结构按照顺序结构按照编写的顺序,从上到下依次运行,整体流程是差不多的,像 if ,if…else…,switch 等
执行流程可以概况为:
1.首先计算关系表达式1的值
2.如果值为true就执行语句体1;
3.如果值为false就计算关系表达式2的值
4.如果值为true就执行语句体2;如果值为false就计算关系表达式3…
5.所有表达式均不满足条件则,执行后面的语句内容
选择结构语法:
if结构:
if(结果为boolean的表达式){
语句体;
}
if…else…结构:
if(结果为boolean的表达式){
语句体1;
} else {
语句体2;
}
switch结构:
switch(表达式){
case 值1:
语句体1
break;
case 值2:
语句体2
break;
default:
语句体3
break;
if…else if…else结构:
if(条件表达式1){
语句体1
}else if(条件表达式2){
语句体2
}else{
语句体3
}
4.循环结构
在某些条件满足的情况下,反复执行特定代码的功能,常见的循环结构有for,while,do…while
循环四要素:
1.循环变量的初始化表达式。
2.循环条件。
3.循环变量的修改。
4.循环体语句块。
循环结构语法:
for循环格式
for(初始化条件1(初始表达式);循环条件语句2(循环条件);迭代语句3(循环变量的修改){
循环体语句4;
}
/**
循环流程:
1.执行初始化语句,完成循环变量的初始化;
2.执行循环条件语句 2,看循环条件语句的值是 true ,还是 false;
如果是 true ,执行第三步;
如果是 false ,循环语句中止,循环不再执行;
3.执行循环体语句3;
4.执行迭代语句 4 ,针对循环变量重新赋值;
5.根据循环变量的新值,重新从第二步开始再执行一遍;
*/
while循环格式
1.初始化语句;
while(2.循环条件 Boolean类型的表达式){
3.循环体语句;
4.条件控制语句;
}
/**
循环流程:
1.执行初始化语句
2.执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
3.执行循环体语句
4.执行条件控制语句
5.回到2继续
*/
do…while循环格式
//1.初始化语句;
do{
2.循环体语句;
3.条件控制语句;
}while(条件判断语句);
/**
循环流程:
1.执行初始化语句
2. 执行循环体语句
3. 执行条件控制语句
4. 执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
5.回到2继续
*/
小结:while是谈好了在干,do…while是干了再说,知道循环多少次最好用for,不知道用while。
补充:
死循环:没有循环次数,或不知道什么时候结束的循环被称为死循环,死循环
死循环格式
//for死循环格式 :
for(初始化条件1;;迭代语句3){
}
//while死循环格式 :
while(true){
}
//do..while死循环格式 :
do{
}while(true);
5.数组
概念: 相同类型数据的有序集合
特点:
1.数组的长度一旦确定不能修改
2.创建数组的时候会在内存中开辟一块连续的空间
3.存取元素的速度快,因为可以通过 [下标index] ,直接定位到任意一个元素
4.数组是引用类型,如果直接打印,打印的是数组的地址
数组的声明和初始化
数组的声明:数据类型[] 数组名;
int [] arr; 声明了arr数据 数据类型为int类型
静态初始化:直接给数组把元素定义好
int [] arr = {
1,2,3}; 直接规定好
动态初始化:给数组规定长度,然后手动给数组每一个位置添加元素
int [] arr = new arr[10]; 直接规定好此数组长度为10 ,手动添加元素
数组四部走
1.声明数组,告诉计算数据类型是什么
2.分配数组,告诉计算机有几个连续的空间
3.赋值,向格子里面放数据
4.数据处理
int [] arr;
arr = new int[5];
arr[0] = 1;
arr[0] *= 10;
数组遍历
就是将数组中的每个元素分别获取出来。
6.方法
是一段用来完成’‘特定功能’'的代码片段(代码块;在c语言中也称之为函数),Java 里面的方法不能独立存在,所有的方法必须定义在类里面。
方法语句体:
修饰符 返回值类型 方法名( [参数类型1 参数名1, 参数类型2 参数名2,…] ){
方法体;
return 返回值;
}
参数列表中声明的变量:形式参数==>实际参数,形式参数与实际参数为同一数据类型
方法三要素:
返回值、方法名、参数列表
方法的作用:
1.把复用的逻辑抽取出来,封装成方法,提高代码的重用性
2.实现相对独立的逻辑,提高代码的维护性
3.可以对具体实现进行隐藏、封装
方法的调用:
方法的调用这里认识一个关键字 static ,被static 修饰的的方法为静态方法,否则就是非静态方法。也可以说被 static修饰的属于类的,通过"类名.方法名()"调用。没有被static修饰属于对象,通过"对象名.方法()"调用。
在这里我们闯将两个类 一个小猫 一个小狗,小猫类中的cat方法用static修饰,小狗类的dog方法没有被static修饰
public class Cat {
public static void cat(){
System.out.println("小猫吃鱼");
}
}
public class Dog {
public void dog(){
System.out.println("小狗吃肉");
}
}
测试类
public class Test1 {
public static void main(String[] args) {
//调用cat方法
Cat.cat();
//调用dog方法
Dog d = new Dog();
d.dog();
}
}
方法也是可以调用方法的
public class Test2 {
public static void main(String[] args) {
cat();
}
public static void cat(){
System.out.println("小猫吃鱼");
dog();
}
public static void dog(){
System.out.println("小狗吃肉");
}
}
方法的重载:
同一个类中,方法名字相同,参数列表不同,则是方法重载。
注意:
1.方法重载指同一个类中定义的多个方法之间的关系,
2.参数列表的不同包括,参数个数不同,参数数据类型不同,参数顺序不同
3.方法的重载与方法的修饰符和返回值没有任何关系
作用:
可读性好,方法名称相同,调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数
方法重载的识别技巧:
1.只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!
(如:修饰符,返回值类型都无所谓)
2.形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称
方法的重写:
规则:
1.参数列表必须完全与被重写的方法参数列表相同。
2.返回的类型必须与被重写的方法的返回类型相同(Java1.5 版本之前返回值类型必须一样,之后的 Java 版本放宽了限制,返回值类型必须小于或者等于父类方法的返回