day2 javaee的入门知识「建议收藏」

day2 javaee的入门知识「建议收藏」1、面向对象与面向过程的区别?面向过程的语言拥有封装、继承、多态的特性,使得整个代码灵活性高,比如Java,C++。容易维护,容易扩展。面向过程的语言直接跟内存打交道,性能要更好,比如java是需要跟虚拟机做交互,先编译解释成机器码。再跟操作系统打交道。大多数面向过程的语言基本都是直接编译成机器码在操作系统上进行执行。所以性能更好。但是java经过多年的发展,性能提升了很大,各位读者要记住javayyds!2、成员变量和局部变量的区别与c++不同的是java中没有全局变量的概念。成员变量:也称

大家好,又见面了,我是你们的朋友全栈君。

1、面向对象与面向过程的区别?
面向过程的语言拥有封装、继承、多态的特性,使得整个代码灵活性高,比如Java,C++。容易维护,容易扩展。
面向过程的语言直接跟内存打交道,性能要更好,比如java是需要跟虚拟机做交互,先编译解释成机器码。再跟操作系统打交道。大多数面向过程的语言基本都是直接编译成机器码在操作系统上进行执行。所以性能更好。
但是java经过多年的发展,性能提升了很大,各位读者要记住java yyds!

2、成员变量和局部变量的区别
与c++不同的是java中没有全局变量的概念。
成员变量:也称为类变量,是定义在类中的变量。
局部变量:是定义在形参,或者是方法体内,或者是代码快中的变量。
**注意:静态代码块中只能给静态变量赋值
关于静态方法,静态变量的内容可以参考文章
https://blog.csdn.net/xxlovect/article/details/7455813

接上:关于成员变量与局部变量的赋值问题
如果一个变量被定义为static那么他就被称之为静态成员变量,简称为静态变量。如果是static,finnal修饰那么就称之为全局常量。
对于finnal修饰的变量,是在编译的时候就分配内存,对于其初始化,是在类加载过程中的链接环节里面的准备环节进行赋值。对于局部变量,系统不会为其分配初始值。除了final修饰的变量,其他变量是在链接阶段的准备环节进行默认赋值,在类加载过程中的初始化过程完成显式赋值。

对于类加载过程,博主会在后续更新一些jvm的知识总结,可以关注博主。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、 关于try-catch-finanl
IDEA中可以使用快捷键Alt+Shift+Z 来对一块代码进行异常处理。
try模块用来捕获异常,catch模块处理异常,finally模块中的代码不管什么情况下都会执行(在正常捕获异常的情况下,或者没有异常的情况下)。
如果finnal中的代码不执行一定是做了一下三件事:

  • 在 try 或 finally 块中用了 System.exit(int)退出程序。但是,如果 System.exit(int) 在异常语句之后,finally 还是会被执行。
  • 线程死亡
  • cpu死亡(close CPU)

4、在多线程中,线程的sleep(),yield(),wait(),join()有什么区别?
Thread.sleep():此方法使线程进入
阻塞状态*,让cpu交出执行权,但是不会释放锁。
Thread.yield():此方法使线程进入可运行状态,让cpu交出执行权,同样不会释放锁
Thread.wait():使线程从运行状态转为阻塞状态释放线程的同步锁
Thread.join():此方法可以保证一个线程在Thread线程执行前结束(优先级大于自己的线程)。

5、推荐将数组转化为Arraylist的方式
在这里插入图片描述
图片来源:https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/basis/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%96%91%E9%9A%BE%E7%82%B9.md

6 遍历集合的方式

  • 使用foreach
  • 使用迭代器
  • 使用用法如下图
  • 在这里插入图片描述

在foreach中不能使用remove来移除元素,在迭代器方式中可以。
原理:如果要进行remove操作,可以调用迭代器的 remove 方法而不是集合类的 remove 方法。因为如果列表在任何时间从结构上修改创建迭代器之后,以任何方式除非通过迭代器自身remove/add方法,迭代器都将抛出一个ConcurrentModificationException,这就是单线程状态下产生的 fail-fast 机制。

fail-fast 机制 :多个线程对 fail-fast 集合进行修改的时,可能会抛出ConcurrentModificationException,单线程下也会出现这种情况,上面已经提到过。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156826.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 免费下载付费文档_原创力文档赚钱容易吗

    免费下载付费文档_原创力文档赚钱容易吗最近我才发现,想要下载个文档,是真的不容易呀!可以让你随便复制粘贴和下载的文档,质量都不怎么样!优质的文档,需要下载券才能下载!说好的「让每个人平等地提升自我」呢?好在机智的我,最终发现了免费下载文档的奥秘,今天就分享出来给大家看,当做福利了,低调点用哦,不要让太多人知道!VVV文档在线导出工具http://wenku.baiduvvv.com/doc/之前很常用的一个在线文库下载网站突然要收费了…

    2025年7月13日
    1
  • C# TextBox输入密码显示星号(*)

    C# TextBox输入密码显示星号(*)在textBox上右键属性在行为-passwordChar后输入*

    2022年7月24日
    35
  • AC自动机总结「建议收藏」

    AC自动机总结0.引言:   由于大连现场赛的一道AC自动机+DP的题目(zoj3545RescuetheRabbit)被小媛同学推荐看AC自动机。经过一段时间的努力,终于把shǎ崽神牛的AC自动机专辑题目AK(其实还差那个高中题。。囧。。不让做)。   特别感谢:shǎ崽神牛,并附以链接:   http://www.notonlys

    2022年4月6日
    54
  • write函数的详解与read函数的详解[通俗易懂]

    write函数的详解与read函数的详解[通俗易懂]write()头文件:#include<unistd.h>原型:ssize_twrite(intfd,constvoid*buf,size_tcount);参数说明:fd:是文件描述符(write所对应的是写,即就是1)buf:通常是一个字符串,需要写入的字符串count:是每次写入的字节数返回值:成功:返回写入的字节数…

    2022年6月22日
    34
  • 面试题:MyBatis二级缓存[通俗易懂]

    面试题:MyBatis二级缓存[通俗易懂]①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。②、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。写这篇文章的初衷:MyBatis二级缓存在实际工作中一般都不会使用,但是就有有些面试官一直问这个问题,所

    2022年9月16日
    1
  • 排序算法:快速排序

    排序算法:快速排序概述手写排序算法几乎是程序员面试必问的题目,大多数人都会选择写冒泡排序,如果此时你写的是其他改进过的排序算法,相信会让面试官眼前一亮。本文将介绍常见的排序算法中的“快速排序”。基本思想快速排序(QuickSort)是对冒泡排序的一种改进。快速排序由C.A.R.Hoare在1962年提出。它的基本思想是:从要排序的数据中取一个数为“基准数”。 通过一趟排序将要排序的数据…

    2022年7月26日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号