Surpass Day4——Java语法基础3

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);

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

权威指南-第一本Docker书

引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。

image

image

image

image

关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。

[外链图片转存中…(img-KW7FPI3w-1713432564289)]

[外链图片转存中…(img-2eQhMBzX-1713432564290)]

[外链图片转存中…(img-u5wg8XZz-1713432564290)]

[外链图片转存中…(img-SqjrEKFo-1713432564290)]

关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值