Surpass Day4——Java语法基础3

本文介绍了Java面试中常见的问题,如输入流处理(InputStreamReader和BufferedReader的使用)、nextLine()与next()的区别,以及方法定义、内存分配、栈内存特性和方法重载的概念。作者提供了面试学习笔记和实战项目源码链接,适合准备大厂面试的读者参考。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

try{

System.out.print(“Enter a Char:”);

char i = (char)System.in.read();

System.out.println(“Yout Enter Char is:” + i);

}

catch(IOException e){

e.printStackTrace();

}

1.3 InputStreamReader和BufferedReader方法

  • 优点: 可以获取键盘输入的字符串

  • 缺点: 如何要获取的是int,float等类型的仍然需要转换

System.out.println(“ReadTest, Please Enter Data:”);

InputStreamReader is = new InputStreamReader(System.in); //new构造InputStreamReader对象

BufferedReader br = new BufferedReader(is); //拿构造的方法传到BufferedReader中

try{ //该方法中有个IOExcepiton需要捕获

String name = br.readLine();

System.out.println(“ReadTest Output:” + name);

}

catch(IOException e){

e.printStackTrace();

}

1.4 nextLine( )和next( )的区别

**nextLine( )**方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。 **next( )**会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。


2、方法


2.1 方法的定义,语法结构

[修饰符列表] 返回值类型 方法名(形式参数列表){

方法体;

}

注意:

1)修饰符列表可选项,不是必须的,目前统一写成public static;

2)方法内的修饰符列表当中有static关键字时,调用方法:类名.方法名(实际参数列表);当方法在该类中时,"类名."可以省略;

3)方法名:首字母小写,后面每个字母大写,遵循驼峰规则;

4)建议一个源文件当中只定义一个class,比较清晰;

2.2 方法在执行过程中,JVM内存的分配和变化

2.2.1 方法的定义和执行:

方法只定义,不调用是不会执行的,并且在JVM中也不会给该方法分配"运行所属"的内存空间;只有调用的时候才会分配所属的内空间;

2.2.2 JVM内存划分上主要的内存空间:

方法区内存、堆内存、栈内存(还有其他的内存空间);

2.2.3 栈数据结构 :

*栈:stack,是一种数据结构;

*数据结构是数据的存储形态;

*常见的数据结构:数组、队列、栈、链表、二叉树、哈希表/散列表;

2.2.4 方法代码文件的存储位置,内存的分配位置:

1)方法代码片段属于**.class字节码文件的一部分,字节码文件在类的加载的时候,将其放到了方法区当中。所以JVM中的三块主要的内存空间中方法区内存**最先有数据。存在了代码片段;

2)代码片段虽然在方法区当中只要一份,但是可以重复调用。每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在栈内存中分配【栈内存中分配方法运行的所属空间】;

3)方法在调用的瞬间会给该方法分配独立的内存空间,在栈中发生压栈动作,方法执行结束之后,给该方法分配独立的内存空间全部释放,此时发生弹栈动作。

压栈:给方法分配内存;

弹栈:释放该方法的内存空间;

4)局部变量在在“方法体”中声明,在栈中存储,运行时在栈中分配

e.g.下列程序模型就是一个压栈、弹栈的过程;

main begin

m1 begin

m2 begin

m3 begin

m3 over

m2 over

m3 over

main over

2.3 栈内存的特点

1)栈帧永远指向栈顶元素

2)栈顶元素处于活跃状态,其他元素静止

3)术语: 压栈/入栈/push

弹栈/出栈/pop

4)栈数据结构存储数据的特点:

先进后出;

后进先出


3、方法执行内存分析


public class MethodTest01

{

public static void main(String[] args)

{

int a = 10;

int b = 20;

int restValue = sumInt(a,b);

System.out.println("retValue = "+ retvalue);

}

public ststic int sumInt(int i,int j)

{

int result = i + j;

int num = 3;

int reValue = divide (result,num);

return retValue;

}

public static int divide (int x,int y)

{

int z = x / y;

return z;

}

}


4、方法重载(overload)


优点:

功能不相同但相似,像是在使用同一个方法一样,程序员编写代码更加方便,也不需要记忆更多的方法名,代码更美观;

(javascript不支持方法重载机制)

public class MethodTest01

{

public static void main(String[] args)

{

System.out.println(sum(1,2));

System.out.println(sum(1.0,2.0));

System.out.println(sum(1L,2L));

}

public static int sum(int a,int b)

{

return a + b;

}

public static long sum(long a,long b)

{

return a + b;

}

public static double sum(double a,double b)

{

return a + b;

}

}

参数的类型不同,对应调用的方法也不同。此时区分方法不再依靠方法名了,依靠的是实参的数据类型。

4.1 什么时候考虑使用方法重载?

*功能相似的时候,尽可能让方法名相同;

【功能不同/不相似的时候,尽可能让方法名不同】;

4.2 构成方法重载的条件

1)在同一个类中

2)方法名相同

3)参数列表不同

(数量不同、顺序不同、类型不同)

4.3 方法重载的影响因素

1)方法重载和方法名+参数列表有关;

2)方法重载和返回值类型无关;

3)方法重载和修饰符列表无关;

4.4 方法重载的应用

用户自定义封装一段代码,使得在使用时更加便捷快速调用;

public class helloworld

{

public static void main(String[] args)

{

U.v(2.0);

}

}

class U

{

public static void v(long b){

System.out.println(b);

}

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例

MyBatis答案解析
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

{

U.v(2.0);

}

}

class U

{

public static void v(long b){

System.out.println(b);

}

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-BmDBRZyV-1714680001738)]

[外链图片转存中…(img-BScPbqVR-1714680001739)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值