Java基础重点总结

特别声明:此文章仅作为作者本人的学习笔记使用,由于作者本人还处在学习阶段,文章中难免有用词不当的地方,或者知识点讲解不清晰的地方,如若读者发现,欢迎评论区留言。如果这篇文章对您有所帮助,希望您能点个赞😜😜😜😜

Scanner键盘录入的总结

​ (1)找到Scanner所在的位置

// 导入Scanner
import java.util.Scanner;

​ (2)创建对象

Scanner sc = new Scanner(System.in);

​ (3)调用 sc 对象身上的方法

int age = sc.nextInt(); // 键盘录入整数
String name = sc.next(); // 键盘录入字符串

类型转换

隐式转换

​ 把一个取值范围小的数值或者变量,赋值给取值范围大的变量,可以直接赋值

在这里插入图片描述

案例:

byte b = 100;
int i = b;//可以成功赋值

解释:

​ 因为byte的取值范围是小的,int的取值范围是大的,在底层进行了隐式转换,不需要我们额外写代码单独实现,是可以直接赋值。

强制类型转换

​ 把一个取值范围大的数值或者变量,赋值给取值范围小的数值或者变量

注意:强制类型转换不允许直接赋值,需要加入强制类型转换

转换格式:

目标数据类型 变量名 = (目标数据类型) 被强制转换的数据;

public class TypeCast{
  public staic void main(String[] args) {
    double a = 12.3;
    int b = (int) a;
    System.out.println(b); // 12
  }
}

我们可以发现原来的 12.3 经过强制类型转换后为 12 ,丢失了小数点后的数字,所以强制类型转换有可能会造成数据精度的丢失。

扩展赋值运算符

类别

​ +=、-=、*=、/=、%=

案例:

public class Demo {
  public staic void main(String[] args) {
    int a = 10;
    int b = 20;
    a += b;  // 相当于 a = a + b;
    System.out.println(a); // 30
    System.out.println(b); // 20
  }
}

注意:扩展的赋值运算符中隐层还包含了一个强制类型转换

​ 以 ‘ += ’ 为例:

a += b; ===> a = (byte)(a + b);

案例:

public class Demo {
  public staic void main (System[] args) {
    byte a = 10;
    byte b = 20;
    // a += b;
    a = (byte)(a + b);
    System.out.println(a); // 30
  }
}

短路逻辑运算符

&&

​ 运算结果与 & 一样(全真即真),但是有短路效果

短路效果: 左边 && 右边 ===>(1)如果 左边 为 true 则继续进行右边的判断

​ (2)如果 左边 为 false 则不进行右边的判断

||

​ 运算结果与 | 一样(全假即假),但是又有短路效果

短路效果: 左边 || 右边 ===> (1)如果 左边 为 true 则不进行右边的判断

​ (2)如果 左边 为 false 则进行右边的判断

运算符优先级

在这里插入图片描述

方法(函数)

介绍:

​ 一段具有独立功能的代码块,不调用就不执行。

好处:

​ (1)可以将原来臃肿的代码按照功能进行分类管理,提高代码的可阅读性

​ (2)提高了代码复用性

定义格式:

public static void 方法名() {
  方法体(逻辑代码)
}

方法的调用格式:

  方法名()

注意事项:

​ (1)方法与方法之间是平级关系,不允许嵌套定义

​ (2)方法不调用不执行

​ (3)方法的执行顺序与定义顺序无关,而与调用顺序有关

public class Demo {
  public static void sayHello() {
    System.out.println("Hello");
  }
  
  public static void main (String[] args) {
    farmer();
    cook();
    sayHello();
    // 再次声名:方法的执行顺序与定义顺序无关,而与调用顺序有关。
  }
  
  public static void cook() {
    System.out.println("买菜");
    System.out.println("洗菜");
    System.out.println("做菜");
  }
  
  public static void farmer() {
    System.out.println("买菜");
    System.out.println("洗菜");
    System.out.println("做菜");
  }
  
}

方法调用内存图解

就以上述代码进行方法调用内存图解的分析

首先我们应该知道,我们的Java代码经过编译后会生成一个 .class 的字节码文件,在内存当中存在一个区域,称之为方法区,我们编译生成后的字节码文件便会放在我们的方法区里

  • 方法没有被调用的时候,方法存放在方法区字节码文件中
  • 方法被调用的时候,需要进入到栈内存中运行

在这里出现了所以我们现来大概了解一下什么是栈

​ 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。

我们把允许插入和删除的一端称之为栈顶,另一端称之为栈底,不含 任何元素的栈称之为空栈。又称之为后进先出的线性表。

在这里插入图片描述

正如弹夹一般,现先押入的子弹后打出,后压入的子弹先打出。

在这里插入图片描述

方法与栈内存的关系

在这里插入图片描述

步骤:

​ 首先,字节码文件加载进入方法区,字节码文件中拥有我们所写的方法,在Java当中 main 方法是程序的出入口,所以mian 方法先进栈,在 mian 方法中我们调用了许多方法,根据我们方法的调用顺序,其次是 farmer 方法进栈执行,执行完后 farmer 方法弹出栈内存,紧接着又调用了 cook 方法cook 方法进栈执行,执行完后 cook 方法弹出栈,随后是 sayHello 方法进栈执行,执行完后弹出,由于此时 mian 方法中已经没有任何的代码,所以最后 main 方法也弹出栈,至此程序执行完毕。

带参数的方法

定义格式:

public static void 方法名(数据类型 变量名1,数据类型 变量名2... ) {  
    // 方法体
}

// 例如
public static void add (int a, int b) {  
    ...
}

调用格式:

方法名(参数1, 参数2);
add(10,20);

带参数方法内存图解

在这里插入图片描述

带返回值的方法

public static 返回值类型 方法名( 参数 ) {
   方法体; 
   return 数据 ;
  // return 下面的代码属于无效代码
}

注意:return语句下面,不能编写代码,因为永远执行不到,属于无效的代码

方法的重载

  • 同一个类中,定义了多个同名的方法,但每个方法具有不同的参数类型参数个数,这些同名的方法,就构成了重载关系

  • 简单记:同一个类中,方法名相同,参数不同的方法

    参数不同:个数不同、类型不同、顺序不同

注意:识别方法之间是否是重载关系,只看方法名和参数,跟返回值无关

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

读书的小蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值