Java
文章平均质量分 74
Hollis Chuang
www.hollischuang.com
展开
-
全网连夜修复的Log4j漏洞,如何做到一行代码都不改?
GitHub 21.5k Star 的Java工程师成神之路,不来了解一下吗!GitHub 21.5k Star 的Java工程师成神之路,真的不来了解一下吗!Apache Log4j2 远程代码执行漏洞的问题最近闹得沸沸扬扬的,很多人都被大半夜叫起来紧急修复这跟问题。有很多人在微信上问我:这种漏洞还能怎么修?下次有问题还要再升级版本吗?有没有啥一劳永逸的办法?就没啥办法避免吗?其实,是有的。有一种技术,可以针对这类漏洞做定向拦截。可以让开发者不用急急忙忙修这个漏洞,甚至你如果完全不想修都可以。这原创 2021-12-29 09:59:24 · 2616 阅读 · 0 评论 -
Log4j未平,Logback 又起,再爆漏洞。
前段时间 Log4j接连爆漏洞的事儿相比把大家都折腾的不轻,很多开发都被连夜叫起来修复漏洞。这几天终于平复一些了。可是,昨晚,忽然看到技术群和朋友圈,有人开始聊Logback 又爆漏洞了。这是什么情况?难道又是远程代码调用这种重量级 bug 吗?难道又要连夜修复了么?于是,第一时间到 Logback 官网去查看了一下。果然有一条在12月22号更新的漏洞通告。漏洞编号:CVE-2021-42550通过官网描述,可以知道:在 Logback 1.2.7及以下版本中,存在安全漏洞,攻击者可以通过更改原创 2021-12-25 15:48:25 · 3093 阅读 · 0 评论 -
为什么阿里巴巴强制要求使用包装类型定义属性?
在阿里巴巴Java开发手册中,对于POJO中如何选择变量的类型也有着一些规定:这里强制要求使用包装类型,原因是什么呢?我们来看一段简单的代码 /** * @author Hollis */public class BooleanMainTest { public static void main(String[] args) { Model model1 = new Model(); System.out.println("default model :原创 2021-10-11 11:56:44 · 459 阅读 · 0 评论 -
千万不要再这样创建集合了!极容易内存泄露!
由于Java语言的集合框架中(collections, 如list, map, set等)没有提供任何简便的语法结构,这使得在建立常量集合时的工作非常繁索。每次建立时我们都要做:1、定义一个空的集合类变量 2、向这个结合类中逐一添加元素 3、将集合做为参数传递给方法例如,要将一个Set变量传给一个方法:Set users = new HashSet();users.add("Hollis");users.add("hollis");users.add("HollisChuang");users原创 2021-09-27 12:45:22 · 3933 阅读 · 8 评论 -
求你了,别再说数据库锁的只是索引了!!!
GitHub 21.3k Star 的Java工程师成神之路,不来了解一下吗!GitHub 21.3k Star 的Java工程师成神之路,真的不来了解一下吗!在MySQL数据库中,为了解决并发问题,引入了很多的锁机制,很多时候,数据库的锁是在有数据库操作的过程中自动添加的。所以,这就导致很多程序员经常会忽略数据库的锁机制的真正的原理。比如,我经常在面试中会问候选人,你知道MySQL Innodb的锁,到底锁的是什么吗?关于这个问题的回答,我听到过很多种,但是很少有人可以把他回答的很完美。因为想要回原创 2021-09-14 10:02:48 · 574 阅读 · 1 评论 -
使用Java8改造出来的模板方法真的是yyds
GitHub 21.3k Star 的Java工程师成神之路,不来了解一下吗!GitHub 21.3k Star 的Java工程师成神之路,真的不来了解一下吗!我们在日常开发中,经常会遇到类似的场景:当要做一件事儿的时候,这件事儿的步骤是固定好的,但是每一个步骤的具体实现方式是不一定的。通常,遇到这种情况,我们会把所有要做的事儿抽象到一个抽象类中,并在该类中定义一个模板方法。这就是所谓的模板方法模式。以前的模板方法在我之前的一篇《设计模式——模板方法设计模式》文章中举过一个例子:当我们去银行的营原创 2021-08-23 09:56:35 · 2000 阅读 · 6 评论 -
使用各类BeanUtils的时候,切记注意这个坑!
在日常开发中,我们经常需要给对象进行赋值,通常会调用其set/get方法,有些时候,如果我们要转换的两个对象之间属性大致相同,会考虑使用属性拷贝工具进行。如我们经常在代码中会对一个数据结构封装成DO、SDO、DTO、VO等,而这些Bean中的大部分属性都是一样的,所以使用属性拷贝类工具可以帮助我们节省大量的set和get操作。市面上有很多类似的工具类,比较常用的有1、Spring BeanUtils 2、Cglib BeanCopier 3、Apache BeanUtils 4、Apache Prop原创 2021-08-16 10:13:03 · 3170 阅读 · 2 评论 -
在Java中,负数的绝对值竟然不一定是正数!!!
绝对值是指一个数在数轴上所对应点到原点的距离,所以,在数学领域,正数的绝对值是这个数本身,负数的绝对值应该是他的相反数。这几乎是每个人都知道的。在Java中,想要获得有个数字的绝对值,可以使用java.lang.Math中的abs方法,这个类共有4个重载的abs方法,分别是:public static int abs(int a) { return (a < 0) ? -a : a;}public static long abs(long a) { return (a &l原创 2021-07-26 10:40:44 · 7216 阅读 · 23 评论 -
你觉得我的这段Java代码还有优化的空间吗?
上周,因为要测试一个方法的在并发场景下的结果是不是符合预期,我写了一段单元测试的代码。写完之后截了个图发了一个朋友圈,很多人表示短短的几行代码,涉及到好几个知识点。还有人给出了一些优化的建议。那么,这是怎样的一段代码呢?涉及到哪些知识,又有哪些可以优化的点呢?让我们来看一下。背景先说一下背景,也就是要知道我们单元测试要测的这个方法具体是什么样的功能。我们要测试的服务是AssetService,被测试的方法是update方法。update方法主要做两件事,第一个是更新Asset、第二个是插入一条As原创 2021-07-19 09:55:32 · 493 阅读 · 0 评论 -
深入源码,深度解析Java 线程池的实现原理
java 系统的运行归根到底是程序的运行,程序的运行归根到底是代码的执行,代码的执行归根到底是虚拟机的执行,虚拟机的执行其实就是操作系统的线程在执行,并且会占用一定的系统资源,如CPU、内存、磁盘、网络等等。所以,如何高效的使用这些资源就是程序员在平时写代码时候的一个努力的方向。本文要说的线程池就是一种对 CPU 利用的优化手段。线程池,百度百科是这么解释的:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,原创 2021-05-26 10:04:28 · 1178 阅读 · 13 评论 -
你这样的“垃圾“,就应该进入老年代!!!
什么样的垃圾会进入到老年代?对象进入老年代的条件有三个,满足一个就会进入到老年代,1、躲过15次GC。每次垃圾回收后,存活的对象的年龄就会加1,累计加到15次(jdk8默认的),也就是某个对象躲过了15次垃圾回收,那么JVM就认为这个是经常被使用的对象,就没必要再带着年轻代中了。具体的次数可以通过 -XX:MaxTenuringThreshold 来设置在躲过多少次垃圾收集后进去老年代。2、动态对象年龄判断。规则:在某个 Survivor 中,如果有一批对象的大小总是大于该 Survivor 的 50原创 2021-05-18 21:40:04 · 1020 阅读 · 9 评论 -
7张图讲透Java垃圾回收算法!学妹直呼666!!!
JVM 在垃圾回收的时候:① 到底使用了哪些垃圾回收算法?② 分别在什么场景下使用?③ 各自的优缺点?下面就来正式的介绍下垃圾回收算法标记-清除标记清除是最简单和干脆的一种垃圾回收算法,他的执行流程是这样子的:当 JVM 标记出内存中的垃圾以后,直接将其清除,但是这样有一个很明显的缺点,就是会导致内存空间的不连续,也就是会产生很多的内存碎片。先画个图来看下我们使用上图左边的图来表示垃圾回收之前的样子,黑色的区域表示可以被回收的垃圾对象。这些对象在内存空间中不是连续的。右侧这张图表示是垃圾回收原创 2021-05-07 20:20:23 · 2662 阅读 · 20 评论 -
面试官:你知道Dubbo怎么做优雅上下线的吗?你:优雅上下线是啥?
最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、动态代理等等都有一定的了解,这位候选人也一样。但是,我接下来问了他一个问题:你们在使用Dubbo的时候,应用如果重启,怎么保证一个请求不会被中断处理的呢?他没怎么说的上来,我以为他不理解我的问题,我接着问他:我就是想问下Dubbo是如何做优雅上下线的你知道吗?接着他问我:优雅上下线是啥??好吧。这篇原创 2021-04-19 10:25:26 · 11955 阅读 · 5 评论 -
牛逼,Java中表达式引擎工具就用它!建议收藏,一定用的到!!
最近在负责一个和定价有关的系统,要做分层的价格决策。在决策过程中有两个诉求:1、需要根据一定的表达式公式,进行分层决策。如月订单金额大于1000元时,给10块钱红包,介于100和1000之间的给5元红包。2、具体价格的产出,需要根据一定的公式。比如根据用户订单金额,称一个固定的系数。这时候,就需要一个表达式引擎。需要能够做表达式匹配和数学公式计算。调研了业内很多的表达式引擎工具,如Ognl、MVEL、IKExpression、Aviator等,根据易用性、性能、可维护性、功能多少等,最终选择了Avi原创 2021-04-15 19:55:18 · 4971 阅读 · 5 评论 -
无侵入性的在日志中打印对象的关键字段
我们在开发的时候,经常要打印日志,有的时候会在一些代码的关键节点处进行日志输出。使用logback/log4j等原生的日志框架,在日志输出的时候可能会遇到一个问题,那就是在打印对象的时候要求对象必须重写toString方法,否则无法将该对象的参数打印出来。如代码 :log.info("req = {}", creditApplyRequest);日志输出:req = com.alibaba.fin.lgp.core.functions.credit.request.CreditApplyReques原创 2021-04-13 22:12:13 · 6060 阅读 · 8 评论 -
丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!
在前几天的文章《为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?》中,我曾经对几款属性拷贝的工具类进行了对比。然后在评论区有些读者反馈说MapStruct才是真的香,于是我就抽时间了解了一下MapStruct。结果我发现,这真的是一个神仙框架,炒鸡香。这一篇文章就来简单介绍下MapStruct的用法,并且再和其他几个工具类进行一下对比。为什么需要MapStruct ?首先,我们先说一下MapStruct这类框架适用于什么样的场景,为什么市面上会有这么多的类似的框架。在软件原创 2020-08-10 12:55:30 · 21104 阅读 · 11 评论 -
原来不只是fastjson,这个你每天都在用的类库也被爆过反序列化漏洞!
在《fastjson到底做错了什么?为什么会被频繁爆出漏洞?》文章中,我从技术角度分析过为什么fastjson会被频繁爆出一些安全漏洞,然后有人在评论区发表"说到底就是fastjson烂…"等言论,一般遇到这种评论我都是不想理的。但是事后想想,这个事情还是要单独说一下,因为这种想法很危险。一旦这位读者有一天当上了领导,那么如果他负责的项目发生了漏洞,他还是站出来说"都怪XXX代码写的烂…",这其实是非常可怕的。工作久了的话,就会慢慢有种感觉:代码都是人写的,是人写的代码就可能存在漏洞,这个是永远都无法原创 2020-07-14 10:16:07 · 1050 阅读 · 0 评论 -
fastjson到底做错了什么?为什么会被频繁爆出漏洞?
GitHub 15.8k Star 的Java工程师成神之路,不来了解一下吗!GitHub 15.8k Star 的Java工程师成神之路,真的不来了解一下吗!GitHub 15.8k Star 的Java工程师成神之路,真的真的不来了解一下吗!fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解析库,通常被用于将Java Bean和JSON 字符串之间进行转换。前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。但是作为一个开发者,我更关注的原创 2020-07-06 09:53:45 · 20743 阅读 · 25 评论 -
谁说双非本科就一定无缘阿里?H哥粉丝6棉通过,喜提Offer!
本文来自作者投稿(原作者:小胖儿),原作者是一位2021届本科毕业生,就读于一所双非(非985、非211)院校,在今年2月份的时候,我曾经帮他指导过简历,并且根据他的简历内容帮他提了一些可能会问到的问题。4月份的时候说是已经通过了阿里的四面,最近又得知已经顺利的拿到了阿里的Offer,非常为他感到高兴。他还顺便总结了一下自己面试经历,介绍了一下自己是如何准备的,也希望能够给大家带来一些帮助。以下是他的原文内容,我也对其中的部分内容做了些批注。前言前两天,我收到了阿里巴巴的暑假实习offer,从学原创 2020-05-27 10:38:40 · 2846 阅读 · 2 评论 -
我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?|附视频讲解
关于String有没有长度限制的问题,我之前单独写过一篇文章分析过,最近我又抽空回顾了一下这个问题,发现又有了一些新的认识。于是准备重新整理下这个内容。这次在之前那篇文章的基础上除了增加了一些验证过程外,还有些错误内容的修正。我这次在分析过程中会尝试对Jdk的编译过程进行debug,并且会参考一些JVM规范等全方面的介绍下这个知识点。因为这个问题涉及到Java的编译原理相关的知识,所以通过视频的方式讲解会更加容易理解一些,视频我上传到了B站:https://www.bilibili.com/video/原创 2020-05-20 09:46:49 · 6556 阅读 · 10 评论 -
老板:kill -9 的原理都不知道就敢去线上执行?明天不用来了!
GitHub 14.5k Star 的Java工程师成神之路,开放阅读了!相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能。但是,怕就怕很多人对于部分命令只是一知半解,使用不当就能导致线上故障。前段时间,我们的线上应用报警,频繁FGC,需要紧急处理问题,于是有同事去线上重启机器(正常程序应该是先采集堆dump,然后再重启,方便排查是否存在内存泄露等问题)。但是在重启过程中,同事发现正常的重原创 2020-05-13 09:58:24 · 2853 阅读 · 5 评论 -
《新版阿里巴巴Java开发手册》提到的三目运算符的空指针问题到底是个怎么回事?
最近,阿里巴巴Java开发手册发布了最新版——泰山版,这个名字起的不错,一览众山小。新版新增了30+规约,其中有一条规约引起了作者的关注,那就是手册中提到在三目运算符使用过程中,需要注意自动拆箱导致的NullPointerException(后文简称:NPE)问题:因为这个问题我很久之前(2015年)遇到过,曾经在博客中也记录过,刚好最新的开发手册再次提到了这个知识点,于是把之前的文章内容翻...原创 2020-05-07 10:07:35 · 1662 阅读 · 2 评论 -
Java工程师成神之路 | 2020正式版
主要版本更新时间备注v3.02020-03-31知识体系完善,在v2.0的基础上,新增20%左右的知识点调整部分知识的顺序及结构,方便阅读和理解通过GitHub Page搭建,便于阅读v2.02019-02-19结构调整,更适合从入门到精通;进一步完善知识体系; 新技术补充;v1.12018-03-12增加新技术知识、完善知识体系v1.0201...原创 2020-04-13 09:50:27 · 5187 阅读 · 2 评论 -
新版任你发,我用Java 8
最近,新版本的JDK又双叒叕发布了,目前已经JDK 14 了,从2017年8月份开始,JDK的更新频率变成了每半年一次,将固定在每年的3月份和9月份发布新版本。按照这个频率,过不了多久,JDK 20 就要推出了…最早的JDK发布于1996年,相信比很多读者的年龄都要小,其发布频次如下:Java 8 与 Java 11 为当前提供支持的LTS(长期支持)版本;2018年9月,随着 Java...原创 2020-03-23 10:00:17 · 3166 阅读 · 8 评论 -
Java 14 发布了,不使用"class"也能定义类了?还顺手要干掉Lombok!
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载。在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records官方吐槽最为致命早在2019年2月份,Java 语言架构师 Brian Goetz,曾经写过一篇文章(http://cr.openjdk.java.net/~briangoetz/amber/datum.html )...原创 2020-03-20 09:51:45 · 5656 阅读 · 4 评论 -
求你了,别再说Java对象都是在堆内存上分配空间的了!
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解。可以说,关于JVM的相关知识,基本是每个Java开发者必学的知识点,也是面试的时候必考的知识点。在JVM的内存结构中,比较常见的两个区域就是堆内存和栈内存(如无特指,本文提到的栈均指的是虚拟机栈),关于堆和栈的区别,很多开发者也是如数家珍,有很多书籍,...原创 2020-03-16 09:40:52 · 2524 阅读 · 2 评论 -
Java堆内存是线程共享的!面试官:你确定吗?
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解。可以说,关于JVM的相关知识,基本是每个Java开发者必学的知识点,也是面试的时候必考的知识点。在JVM的内存结构中,比较常见的两个区域就是堆内存和栈内存(如无特指,本文提到的栈均指的是虚拟机栈),关于堆和栈的区别,很多开发者也是如数家珍,有很多书籍,...原创 2020-03-10 10:06:26 · 3504 阅读 · 10 评论 -
我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?
在Java基础中,集合类是很关键的一块知识点,也是日常开发的时候经常会用到的。比如List、Map这些在代码中也是很常见的。个人认为,关于HashMap的实现,JDK的工程师其实是做了很多优化的,要说所有的JDK源码中,哪个类埋的彩蛋最多,那我想HashMap至少可以排前五。也正是因为如此,很多细节都容易被忽视,今天我们就来关注其中一个问题,那就是:为什么HashMap的负载因子设置成0.7...原创 2020-02-24 09:17:59 · 4576 阅读 · 2 评论 -
阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?
集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生。关于HashMap,很多人都对他有一些基本的了解,比如他和hashtable之间的区别、他和concurrentHashMap之间的区别等。这些都是比较常见的,关于HashMap的一些知识点和面试题,想来大家一定了熟于心了,并且在开发中也能有效的应用上。但是,作者在很多...原创 2020-02-19 10:34:01 · 3117 阅读 · 0 评论 -
新来个技术总监,禁止我们使用Lombok!
我有个学弟,在一家小型互联网公司做Java后端开发,最近他们公司新来了一个技术总监,这位技术总监对技术细节很看重,一来公司之后就推出了很多"政策",比如定义了很多开发规范、日志规范、甚至是要求大家统一使用某一款IDE。但是这些都不是我这个学弟和我吐槽的点,他真正和我吐槽的是,他很不能理解,这位新来的技术总监竟然禁止公司内部所有开发使用Lombok。但是又没给出十分明确的,可以让人信服的理由。于...原创 2020-02-11 10:42:02 · 158529 阅读 · 200 评论 -
2020年Java程序员应该学习的10大技术
对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西。每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5、Spring Security 5和Spring Boot 2等,这些都给我们带来了很大的挑战。在2019年初,我认为Java 10还是比较新的,但是,在我学习完所有Java 10的特性之前,Java 11、Java 12、Java 12 已经接踵而至...原创 2020-01-09 10:22:21 · 18789 阅读 · 19 评论 -
为啥HashMap的默认容量是16?
集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生。在日常开发中,我们经常会像如下方式以下创建一个HashMap: Map<String, String> map = new HashMap<String, String>(); 但是,大家有没有想过,上面的代码中,我们并没有给H...原创 2019-12-09 09:39:30 · 15399 阅读 · 20 评论 -
我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
本文来自微信公众号:Hollis,原作者是一位不愿意透露姓名的粉丝相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高。楼主自认为自己对MySQL的索引相关知识有很多了解,而且因为最近在找工作面试,所以单独复习了很多关于索引的知识。但是,我还是图样图森...原创 2019-12-05 09:16:27 · 2123 阅读 · 0 评论 -
关于HashMap容量的初始化,还有这么多学问。
在《[HashMap中傻傻分不清楚的那些概念][1]》文章中,我们介绍了HashMap中和容量相关的几个概念,简单介绍了一下HashMap的扩容机制。文中我们提到,默认情况下HashMap的容量是16,但是,如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择大于该数字的第一个2的幂作为容量。(3->4、7->8、9->16)本文,延续上一篇文章,我们再来深入学习下,到底应不应该设置...原创 2019-12-03 09:41:59 · 2121 阅读 · 0 评论 -
什么鬼,面试官竟然让我用Redis实现一个消息队列!!?
GitHub 9.4k Star 的Java工程师成神之路 ,不来了解一下吗?GitHub 9.4k Star 的Java工程师成神之路 ,真的不来了解一下吗?GitHub 9.4k Star 的Java工程师成神之路 ,真的确定不来了解一下吗?众所周知,redis是一个高性能的key-value数据库,在NoSQL数据库市场上,redis自己就占据了将近半壁江山,足以见到其强大之处。同时,...原创 2019-12-02 09:49:24 · 3799 阅读 · 0 评论 -
不瞒你说,我也参加过培训
最近,经常有很多粉丝问我一些关乎培训的事情。最多的莫过于以下几个问题:1、我技术不太好,到底要不要报培训班2、如果要报培训班,什么时候报最合适3、到底哪家机构最靠谱呢?不知道该怎么选择4、现在很多公司都歧视培训的,你怎么看?还有人和我表达过这样的想法:没有培训的时候,很多人很迷茫;有了培训以后,很多人更迷茫了。关于这个问题,我倒是可以简单谈一谈,毕竟我也是个过来人,因...原创 2019-11-18 09:42:10 · 2930 阅读 · 3 评论 -
FastJson稍微使用不当就会导致StackOverflow
GitHub 9.4k Star 的Java工程师成神之路 ,不来了解一下吗?GitHub 9.4k Star 的Java工程师成神之路 ,真的不来了解一下吗?GitHub 9.4k Star 的Java工程师成神之路 ,真的确定不来了解一下吗?对于广大的开发人员来说,FastJson大家一定都不陌生。FastJson(https://github.com/alibaba/fastjson...原创 2019-11-11 09:34:54 · 2589 阅读 · 0 评论 -
感觉自己不会的东西太多了,不知道如何下手?
GitHub 8.8k Star 的Java工程师成神之路 ,不来了解一下吗?GitHub 8.8k Star 的Java工程师成神之路 ,真的不来了解一下吗?GitHub 8.8k Star 的Java工程师成神之路 ,真的确定不来了解一下吗?如果让我统计下,粉丝问我做多的问题是什么,这个问题肯定可以排前5,问出这个问题的朋友们遍布各个年龄段。实话说,这个问题同样也困扰过我,大概就是我刚...原创 2019-10-14 09:59:36 · 50731 阅读 · 56 评论 -
为什么main方法是public static void?
Main方法是我们学习Java编程语言时知道的第一个方法,你是否曾经想过为什么main方法是public、static、void的。当然,很多人首先学的是C和C++,但是在Java中main方法与前者有些细微的不同,它不会返回任何值,为什么main方式是public、static、void,这篇文章尝试去找到一些答案。Main方法是Java程序的入口,记住,我们这里不会讨论Servlet、MI转载 2014-11-16 11:28:04 · 1199 阅读 · 0 评论 -
Java main 方法详解
1、main方法说起编译完我们的java文件后,需要有个一含有main方法的类,java 命令将指示操作系统启动一个jvm进程这个jvm进程启动后,寻找那个main地方开始执行程序java [JVM_Options] ClassName_with_main [args_separate_space]main方法的签名必须是 pubic static void main(Stri转载 2014-11-16 11:26:26 · 1580 阅读 · 1 评论