Java基础知识整理【新手值得拥有】

java基本数据类型

byte(0) 8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short(0) 16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int(0) 32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long(0) 64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float(0.0) 32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double(0.0) 64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean(false) 只有true和false两个取值。
char(null) 16位,存储Unicode码(万国码),用单引号赋值。

常量: 在程序运行期间不会发生改变的量,一般放在常量池里。

常量的分类: 字符串常量,整数常量,浮点数常量,字符常量,布尔类型常量,空常量null。

变量: 程序运行期间可以发生改变的量。
变量使用的注意事项:

  1. 如果创建多个变量,变量名在指定作用域内不可重复。
  2. 对于float和long类型来说,字母后缀F和L不要丢掉。
  3. 如果使用byte和short类型变量,那么右侧的数据不能超过左侧的类型范围。
  4. 没有赋值的变量不能直接使用:变量必须先赋值,后使用。
  5. 可以通过一个语句创建多个变量,但是不推荐这么写。

数据类型转换
自动转换: 代码不需要进行特殊处理,自动转换。(规则:从小到大)
强制转换: 代码需要进行特殊的格式处理,不能自动完成。

  • 如果没有超过左侧范围,编译器不上强转。
  • 如果右侧超过左侧范围,直接报错。

注意事项:

  • 强制类型转换一般不推荐使用,因为有可能发生精度损失,数据溢出。
  • byte/short/char这三种类型都可以发生数学运算,例如加法“+”。
  • byte/short/char这三种类型发生运算时,都会首先被提升为int类型,然后计算。

运算符整理

运算符: 进行特点操作的符号。例如:+
表达式: 用运算符连起来的叫做表达式。

算术运算符
+(加法) 加法运算,字符串连接运算,对于char类型先转换为int
-(减法) 减法运算
*(乘法) 乘法运算
/(除法) 除法运算
% (取余) 取模运算,两个数字相处取余,只适用于整形
++、–(自增、自减) 自增自减运算(在前先算后赋值,在后先赋值再算)
赋值运算符
= 等于号
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
%= 取模等于

注:”运算符=”意义是将等号后面看做整体然后用(左边的变量(运算符)右边的变量或数值)

比较运算符 结果只有true(判断正确)和false(判断错误)
== 等于(注意两个等于是比较,一个等于是赋值)
< 小于
> 大于
<= 小于等于
>= 大于等于
!= 不等于

比较运算的注意事项:

  • 运算结果只能是boolean值。
  • 如果进行多次判断不能连这些。例如:int m=10; boolean rst=m<12 && m>5;
逻辑运算符
(或) 从左向右进行判断,如果第一个不符合条件则不需要判断后面。
&&(与) 从左向右进行判断,如果第一个不符合条件则不需要判断后面;如果是&第一个错误,也要判断第二个。
!(非) 优先级相对较高

三元运算符
格式:
数据类型 变量名称 = 判断条件?表达式A:表达式B;(判断正确,执行表达式A;反之执行表达式B)
三元运算符嵌套
变量名称 = 判断条件?(判断条件?表达式A:表达式B):表达式C;

JDK、JRE、JVM

JVM: 实现java跨平台性。我们编写的程序在JVM上,而JVM在操作系统上。
JRE: 是java运行时的环境,包含JVM和运行时的核心类库。
JDK: 是java程序开发工具包,包含了JRE和开发人员使用的工具。运行只需要JRE即可。
在这里插入图片描述

程序流程结构

顺序结构,选择结构,循环结构。

顺序结构
1.按顺序中间没有分钟判断,一路到底的结构。

选择结构

  • if-else语句(可以连着if-else)
    if(关系表达式){
    语句体;
    }else if(关系表达式){
    语句体;
    }else{
    语句体;
    }
注意事项: else是紧跟与他最近的一个没有连接其他else的if语句。
  • switch语句(用于多个选项进行选择,break可以没有)
    switch(表达式){
    case空格常量:语句体;break;



    default空格:语句体;break;
    }
注意事项: 1)多个case后面的数值不可以重复;
		  2)switch后面小括号当中只能是下列数据类型:
			基本数据类型:byte/short/char/int
			引用类型:String字符串、enum枚举
		  3)switch语句可以很灵活,前后顺序可以颠倒,
	匹配到谁,就从谁开始一直往下执行,直到遇到break语句或者执行到最后一条语句结束。

循环结构

  • for循环:
    for(初始化表达式;布尔表达式;步进表达式){
    循环体;
    }
备注:适用于循环此时已知的循环结构。
  • while循环:
    while(布尔表达式){
    循环体;
    步进表达式;
    }
备注:在不知道循环次数的时候使用。
  • do-while表达式:
    do{
    循环体;
    步进表达式;
    }while(布尔表达式);
备注:1.用于先执行一次循环,在进行判断的情况。
2.while语句之后有一个逗号不能忘记。
循环注意事项:
1.循环可以嵌套使用,但是一定要有终止循环的条件。
2.嵌套循环要注意内外层的条件相结合,数组循环不能越界。

方法入门

方法的概述

  1. 方法就是讲一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
  2. 当我们需要这个功能的时候,直接调用即可。实现代码的重复利用。

方法定义
格式(eg1):
Public static void 方法名称(){
方法体;
}
方法体:大括号中可以包含任意语句。

注意事项

  • 方法定义的先后顺序无所谓;
  • 方法应该定义在类当中,不能产生嵌套关系;
  • 方法定义好之后不会执行。如果想要执行,一定要调用。
  • 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
  • return后面的返回值数据,必须和方法的返回值类型,对应起来。
  • 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
  • 对于void方法当中最后一行的return可以省略。
  • 一个方法当中可以有多个return语句,但是必须保证同时有一个会被执行到,两个return不能连写。

方法的调用
如果方法有返回值,则需要在调用出定义相应返回值类型,接住方法返回的值。
如果没有返回值,则直接调用,如:method();

三种调用格式

  1. 单独调用:方法名称();
  2. 打印调用:System.out.println(方法名称(参数));
  3. 复制调用:数据类型 变量名称=方法名称;

返回值类型: 也就是方法最终产生的数据结果是什么类型。
方法名称: 方法的名称,规则和变量一样:首字母小写第二个单词开头字母大写。
参数类型: 进入方法的数据是什么类型。
参数名称: 进入方法的数据对应的变量名称
备注: 参数如果有多个,使用逗号进行分隔。

流程控制语句:

  1. break:跳出循环体或者switch语句。只往外跳出层循环。
  2. continue:结束本次循环,直接进入下一次循环判断。
  3. return:两个作用:第一跳出当前方法;第二:后面的返回值还给调用出。

方法调用的流程图解
在这里插入图片描述

方法传参

  1. 基本数据类型,操作传递的是变量的值
  2. 引用类型传递的是地址值
  3. String类型比较特殊,虽然传递的是地址,
    但是由于String类型不可变,所以在参数传递时,String类型只能改变地址值的指向。

方法的重载
产生方法重载的原因: 多个方法可能实现功能一样,但是要的参数不一样,难以记忆。
方法重载(OverLood),多个方法名称一样,但是参数列表不一样。
好处: 只需要记住一个方法功能,就能实现多个类似功能。
三要素: 同一个类中,方法名相同,参数列表不同。
(参数的个数,或类型不同,或顺序不同 都不行)

数组
数组是一种容器,可以同时存放多个数据值。
特点

  1. 数组是一种引用数组类型。
  2. 数组当中的多个数据,类型把必须统一。
  3. 数组的长度在运行期间不可改变。

数组的初始化: 在内存当中创建一个数组,并且向其中赋予一些默认值。

两种常见的初始化方式:

  1. 动态初始化(指定长度)
  2. 静态初始化(指定内容)

动态初始化数组的格式
数据类型[] 数组名称 = new 数据类型[];
解析含义
左侧数据类型: 也就是数组当中保存的数据,全都是统一的什么类型。
左侧得中括号: 代表我是一个数组。
左侧的数组名称: 给数组去一个名字。
右侧的new: 代表创建数组的动作。
右侧数据类型: 必须和左侧的数据类型保持一致。
右侧的中括号的数字: 也就是数组当中,到底可以保存多少的数据,是一个int数字。

静态初始化数据的格式
数据类型[] 数组名称 = new数据类型[] {元素1,元素2,元素3,。。。。};
数据类型[] 数组名称 = {元素1,元素2,元素3,。。。。};

注意事项

  1. 虽然中括当中没有直接告诉长度,但是根据大括号的元素内容,也可以自动推算出长度。
    可以用 数组名.length 来获得数组长度。
  2. 静态初始化标准格式可以拆分成为两个步骤。
  3. 动态初始化也可以拆分成为两个步骤。
  4. 静态初始化一旦使用省略格式,就不能拆分成为两个步骤。

Java内存划分:java内存需要划分成为5个部分
在这里插入图片描述
注释:重要的是了解前三个

数组的内存图
在这里插入图片描述

数组越界
是属于异常,不属于错误,很简单的判断:若果发生错误idea会泛红,异常会在编译时发生错误
数组越界异常: ArrayIndexOutBoundsException
原因: 索引编号写错了。索引编号斌不存在。

空指针异常: NullPointerException
所有的引用类型变量,都可以赋值一个null值。但是代表其中什么都没有。

数组必须进行初始化才能使用其中的元素。如果只是赋值null,没有进行new创建,那么将会产生空指针异常。

猜你喜欢

转载自blog.csdn.net/lyq7269/article/details/106814069