《一线大厂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);
}
最后
在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
大家看完有什么不懂的可以在下方留言讨论也可以关注。
觉得文章对你有帮助的话记得关注我点个赞支持一下!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
{
U.v(2.0);
}
}
class U
{
public static void v(long b){
System.out.println(b);
}
最后
在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-BmDBRZyV-1714680001738)]
[外链图片转存中…(img-BScPbqVR-1714680001739)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
大家看完有什么不懂的可以在下方留言讨论也可以关注。
觉得文章对你有帮助的话记得关注我点个赞支持一下!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!