想要自学JAVA,应该如何入门?全面系统的Java内容如下:
一、JavaSE基础篇
JavaSE就是一种标准版,是Java语言的基础部分,Java衍生出来的各种框架(如Spring系列)各种产品都是基于JavaSE标准,JavaSE是Java向上发展的基础 , Java任何高级产品的底层基础都是JavaSE , 通俗来讲这是所有孩子的”爹“ 。JavaSE如果学不好 , 理解不透彻 , 后面学习框架时就有如天书一般 , 所以JavaSE这部分的重要性是不言而喻的,希望各位初学者铭记 。
主要包含内容:数据类型、基础语法、运算符、流程控制、数组、面向对象、常用类、异常处理、集合、IO流、多线程、反射、注解、解析、网络编程 。
PS:JavaSE的内容非常庞大,任何一套JavaSE教程都不会把所有的方法讲一遍,只会挑平时工作中常用的内容来讲解,所以JavaSE里面的内容很多都是课后自己在API文档中慢慢宽咐了解的,你自己一定要学会主动学习 , 不能坐以待毙 。
推荐学习书籍:Java核心技术
二、数据库篇
数据库是学习Java语言必学的一项内容 , 常见的数据库就是MySQL和Oracle这两种,作为初学者一般都是学习MySQL为主,一般情况下中小型企业都会选择MySQL数据库,比较大型的互联网公司会选择用Oracle,而学习Oracle相对于MySQL也要复杂一庆乎些,建议是主要学习MySQL数据库,Oracle作为了解即可 。学习数据库较为简单,基本的操作就是增删改查 。
三、Web开发
Web前端内容:HTML/CSS/JavaScript/(前端页面)
注意:Java后端开发可以不用过多关注HTML页面及CSS的处理,但是最起码要会用简单的HTML,JavaScript是必须要会的,因为Javaweb后端程序员毕竟要接触使用AJAX方式处理数据及显示 。当然如果只关注服务器端实现而不考虑任何用户界面,则HTML、CSS、JavaScript都不用关注,但是完全脱离前端的开发现在虽然也不少,但是绝对不关心前端是不可能,尤其是JavaScript,但是前端却可以完全不关心服务器后台的任何实现 。
推荐学习书籍:《JavaScript DOM编程艺术》(第二版)
四、高级框架
1、Springframework 核心IOC容器
2、Spring boot 在Spring基础上的更全面提升效率的Spring工具
3、ORM 框架当今流行使用较多的是Mybatis 和 MP(Mybatis插件),Hibernate是可选性学习的
4、模板技术 , 比较成熟的Freemarker
5、Spring Cloud 微服务框架,Spring Cloud提供的全套的分布式系统解决方案 。
五、工具
maven 是构建管理项目的工具,svn 和git是团队协作开发的项目源代码及相关文档资料管理工具 , 需要学习者初步掌握其应用 。
像Tomcat,jetty , resin,JBoss,GlassFish 等都是部署运行Java web应用的服务器 。
以上就是初学者大概学习的内容 , 我是尽量站在初学者的角度来说的,没有写得特别复杂,怕初学者看不懂,没有实质性的帮助 。所以我尽量用白话把话说的简单一些,给大家罗列出主要学习的Java知识点 。
Java学到什么程度才能达到就业的水平?
不同的软件公司对研发人员的水平要求存在一定的差异 , 如果从大多数中小型企业来看能接受一个入职到本企业的IT技术人员通常需要具备以下能力 。
1 理解掌握Java核心面向对象的设计思想和代码构建,能以面向对象方式设计编写业务功能;
2 熟练掌握至少两种数据库的开发,如Oracle,mySql,能熟练编写基本常用及高级的SQL语句;
3 必需掌握并熟练应用Springframework IOC容器 , 深入了解IOC及AOP概念并应用,使用MVC实现对web 请求做出处理;
4 熟练掌握Java处理数据库的ORM框架myBatis , JDBCTemplate,对Hibernate也应有所了解;
5 熟练应用Spring 增强工具集合Spring boot;
6 至少熟练使用Eclipse及IDEA集成开发工具构建应用程序;
7 能够基本掌握MVN GIT Maven 在项目中的使用;
8 前端开发必需掌握JavaScript和常用的JS框架
以上这些都是中小型软件企业的入职基本要求,如果你能够达到这个水平,找到一份Java工作应该是不难的 。
推荐的学习方式:系统视频教程 书籍辅助 有人指导
视频教程:对于Java初学者来说,看视频学习也是最普通的方式,视频教程会把工作中常用的知识进行讲解 , 而且视频一般都是分章分节,每一个小节都只讲一个知识点,学习起来较为明确 。但是视频教程尽量要完整,最好是一整套视频学习 。
书籍辅助:书籍便于对理论知识的补充,以便更容易理解Java面向对象核心设计理念和代码实践功能 。
PS:但是大部分人都没有耐心看不下去书 , 所以大部分人都是只看视频教程学习 。如果自己能看的下去就看,看不下去就不看 。
有人指导:大部分人都不可能全靠自己的能力把Java学的特别好,因为你不了解这个行业,也不知道怎么学,完全零基础自学Java想要找到工作,概率极低 。所以建议如果真的想要做这行,尽量找人去带带你,有不懂的问题可以直接请教,少走弯路 , 提高效率 。学习的质量决定以后工作的薪资以及起点 , 所以还是应该重视起来 。
项目的重要性
很多Java初学者看完一些视频,学过一段时间就说自己“会了” 。这里我需要给大家纠正一个问题,希望每个学习Java的知友都能明确学习编程的中心是什么 。
其实在我看来,学习编程从来都不存在会不会这样的说法 。学习编程不同于初中学的数学、物理、化学,记住一些公式,做同样一种类型的习题,就证明类似的题型你会做了 。
编程只讲技术能力是什么水平、什么级别的,最能证明技术水平处在什么阶段的,就是在做项目的过程中,研发好的互联网产品,写代码的质量怎么样,排错能力怎么样,找BUG的能力怎么样 , 构思功能模块整体布局的能力怎么样等等 。
做作为初学者想要达到入门的水平,就是自己具备了一些简单项目的编码能力,初学者最重要的一点就是培养自己的编程思维,每一个程序都是不一样的,你不可能都背下来 , 学编程也不是靠死记硬背的,你只有能去独立编码写一些东西的时候 , 才有就业的机会 。
所以做项目的能力才能去衡量一个学习的水平处在什么阶段,而往往那些嘴上说“会了”的人,往往没写过多少代码,也一个项目做不了出来,这就是纸上谈兵,完全曲解了学习编程到底在学什么,也不知道应该往哪里去 。
所以一个Java初学者在学习的整体过程中,必须要有两个能拿得出手,能写在简历上的项目作为找工作的资本,并且要对于这两个项目的前前后后相当了解 , 才可能最后面试成功,一个初学者在学习完Java所有内容后,如若还达不到可以做简单项目的水平,那么他整个学习过程还是白费 , 没有达到最终的学习目的,就是学习质量不过关 。所以项目的重要性希望大家都明确 , 因为有太多Java初学者不知道最后学习的目的是什么,最后白白的浪费时间 。
学习心态:
学习编程一定不是一个简单的事情 , 换句话说它还是挺困难的,毕竟能出去找到工作 , 就是少则五六千,多则上万的工种 。这些知识都不是随随便便就是任何一个人都能学会的 。关于这个学习心态,希望提示大家要把重心放到“学习”这件事上,因为我发现有很多Java初学者都是像“完成任务”一样去学习,所谓完成任务就是“我把这些视频看完就能找到工作吗”“我把这些都学完就能找到工作吗”学完并不等于“学会” , 这是两种不同的概念 。
你到底理没理解?
你到底能不能应用起来?
你到底用没用心?
你自己应该是最清楚的,我发现那些把学习当做完成任务一样去对待的 , 这样的人没有一个是有耐心的,自己在心里欺骗自己“把这些视频看完我就能找到工作”,到了最后自己就逐渐明白,完全是自欺欺人,最后放弃说自己不适合学这个 。其实揭开这些人的面具真相就一个:他们没有耐心学习 , 也不喜欢学习,这是以前经历造成的,是多年的习惯导致的 。
所以正确的学习心态一定是把关注点放到学习这件事本身,你要学会这些知识,这些内容,这些技术,这是需要一天一天逐渐积累起来的,并不是短时间就可以达到什么结果 。
PS:如果你对于学习没什么耐心,没什么兴趣,我劝你不要来学习编程 , 学习编程绝对是一个耐心的活,也是需要不断学习和充电的行业 。或者说已经到了信息时代,不爱学习的人,很难有耐心去学习知识的人,在信息时代是混不下去的,任何行业都是如此 , 不学习不进步不紧贴时代的人就一定会被淘汰 。
最终自学Java能就业的人基本具备以下几点:
1、有超强的学习耐心及进取心
2、手不懒,代码写的足够多 , 熟能生巧
3、有一定的学习能力,善于自学善于自己解决问题
4、可以独立写一些简单的项目
自学 Java 怎么入门?自学的困难就是,不知道该从哪里开始,才怎么学,没有一个系统的学习路径,现在黑马程序员最新上线了java学习路线图 , 非常好的解决了一个难题,可以去搜索看一下 。
一、java基础
学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些最大子段和代码java我们称之为JavaSE基础 。当你掌握了这些内容之后,你就可以做出诸如:电脑上安装的迅雷下载软件、QQ聊天客户端、考勤管理系统等桌面端软件 。
JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路 。
在Java基础板块中有6个子模块的学习:
技术树
二、数据库
互联网最具价值的是数据,任何编程语言都需要解决数据存储问题,而数据存储的关键技术是数据库 。MySQL和Oracle都是广受企业欢迎的数据库管理系统 。Java程序和数据库通信的最常见技术是JDBC,Druid和C3P0 。学习这些数据库技术后,可以掌握数据库运维技术、复杂业务表结构设计规范、工作中常见的SQL操作、软件数据存储等 。
数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能 。用于对交互过程中客户的数据进行存储 。
该板块包括关系型数据库和非关系型数据库 。
例如:MySQL、oracle、redis、MongoDB等 。数据库学习完毕后,可以将数据存储到数据库中,也可以通过SQL语句从数据库中查询数据,结合Java项目可以实现动态站点的数据的保存 。
技术树
三、前端技术
浏览器展示给用户看到的网页就是前端 , 前端有三大基础技术分别为Html、CSS、JavaScript,这些学完后,为了做出更好、更炫的交互式体验效果 , 我们还需要学习jQuery、ElementUI、Vue、Ajax,以及打包工具webpack 。学完这些技术后,我们可以开发微信小程序、响应式网站、移动端网站、开发类似京东一样的B2B2C商城、管理后台等 。
Javaweb阶段包括前端、数据库和动态网页 。Javaweb是互联网项目的入门课程,是学习后面高进阶课程的基础 。
首先,我们先看一下前端板块 。该板块主要包括如下几个模块:
学习前端技术后,可以完成类似京东、淘宝的前端工程的编写 。
技术树
四、动态网页
掌握前端技术只能做静态网站 , 但它页面数据一成不变,而动态网站可以根据数据库中变更的数据实现不同的内容展示,应用更广泛 , 因此程序员必须要学会做动态网站 。使用Java做动态网站,我们需要学习Servlet、Filter、Session、Cookie、JSP、EL表达式、JSTL等做动态网站的完整知识体系,学完可研发出OA系统、内容网站、BBS等 。
动态网页是中级程序员服务器端编程的基础,是高级框架学习的必备课程,后期学习的框架、服务底层都是基于动态网页技术之上的 。
该板块包括Javaweb核心技术、包括Servlet、Request、Response、Cookie和Session等 , 通过这些技术的学习可以完成动态站点开发 , 可更好的完成服务器端与客户的交互 , 让页面的数据“动”起来,做出小型的应用系统 。
技术树
五、编程强化
前面学了JavaSE基础,但它在企业级应用中程序处理业务的效率并不高、扩展差,编程强化是对JavaSE基础的加强 , 将针对性的提高程序处理业务的执行效率、增强程序扩展性 。编程强化将加强多线程高级学习 , 涉及线程内存、线程通信等技术 。学完以后,能增加一个中级程序员的知识储备,无论在面试过程中还是将来技术的深入打一个良好的基础 。
编程强化是对解决实际问题方面做一个深入的了解和应用,是对JavaSE基础的加强 , 对后期自动以框架和对一些服务框架的底层理解做支撑 。
编程强化板块主要包括如下几个模块:多线程高级、涉及线程内存、线程通信等;JVM优化,对JVM底层进行调优来提高项目执行效率;NIO,同步非阻塞IO来提高效率 。
学习该阶段,可以对原有项目进行优化从而使程序更快更稳定 。
技术树
六、软件项目管理
公司开发都是团队协同开发,为更好的掌握实际开发 , 我们还需要学习常用的项目管理平台、版本控制器、项目构建工具以及自动化部署工具 。项目开发一定是有版本升级的,管理好项目进度和版本需要Git、Maven、Sonar这样的系统平台 。学习完软件项目管理后,将掌握整个项目实际开发过程以及整个项目开发过程中所使用协同开发工具 。
JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路 。
在Java基础板块中有6个子模块的学习:基础语法 , 可帮助你建立基本的编程逻辑思维;面向对象,以对象方式去编写优美的Java程序;集合,后期开发中存储数据必备技术;IO,对磁盘文件进行读取和写入基础操作;多线程与并发,提高程序效率;异常,编写代码逻辑更加健全;网络编程 , 应用服务器学习基?。?完成数据的远程传输 。
学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等 。
技术树
七、热门技术框架
Javaweb掌握后,已经具备企业中实际项目的开发能力了,但它开发效率低,代码量大,开发周期长、开发成本高 。企业中广泛使用一些优秀的框架技术来解决上述问题,因此我们还需要学习框架技术,项目开发中主流的Java框架技术有SpringMVC、Spring、MyBatis、MyBatis Plus、SpringData等 。这些框架技术都是一个优秀程序员所必备的技能 。
使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能 。
热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作 。
该板块学习后,就可以进行真实企业级项目开发了,做出的项目也会更加符合企业要求 。
技术树
八、分布式架构
需要用到分布式微服务的技术 。学习完该阶段课程 , 可以具备大型SOA架构和微服务架构能力,能掌握大型微服务项目必备技术和实际经验 。企业发展过程中,业务量和用户量逐渐增加,为了保证系统的可用性,系统越做越复杂,研发人员增多,大家很难共同维护一个复杂的系统,往往修改部分内容,导致牵一发而动全身,所以我们需要升级系统架构,
随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了 。该板块主要讲解的是分布式架构的相关解决方案 。
主要包括如下模块:Dubbo , 高性能的 RPC 服务发布和调用框架;SpringBoot,简化Spring应用的初始搭建以及开发过程;Spring Cloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等 。
该板块的学习,可以具备大型互联网项目开发的必备技术和实际经验,为进入BATJ打下基础
技术树
九、服务器中间件
在分布式系统架构中,服务与服务之间的异步通信,是非常常见的需求之一,消息中间件的诞生正是为了解决这类问题 。目前市面上的主流消息中间件有RabbitMQ、RocketMQ、Kafka,我们将学习这3个消息中间件,实现分布式项目中的异步通信 。学习完这些后,可以实现分布式项目的异步通信、分布式应用日志收集、分布式事务等 。
中间件板块是大型互联网项目中必备的 。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能 。其包括远程服务框架中间件 , 例如阿里(Apache)的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等 。
学习服务中间件是中级JavaEE工程师必要技术,也是JavaEE架构师必须精通的技术 。
技术树
十、服务器技术
程序开发完成后,我们把它们打包部署到服务器中运行,所以我们需要学习常见的服务器技术,常见的服务器有Linux和Window server,Linux性能高,是当前主流 。我们写好的项目需要用一个软件运行起来,这个软件叫web容器,我们需要在服务器上安装web容器来发布项目,当前主流的web容器有tomcat、jetty、nginx、undertow 。
不管是使用原生Javaweb进行开发,还是使用框架进行开发,项目最终需要对外发布才能供全世界的人访问到,而服务器板块就可以解决这个问题,所以服务器是项目发布的必要技术 。该板块包括虚拟化和web应用服务器的学习,主要包括如下几个模块:Vmware,虚拟机软件;Linux,专门用于服务器的系统;Nginx,集群部署时反向代理服务器;Tomcat,项目发布时主要使用的服务器 。
该板块学习后,我们就可以把开发好的项目发布到服务器中,然后供你的小伙伴远程访问了,超酷最大子段和代码java!
技术树
十一、容器技术
具备了服务器操作系统及web容器 , 我们就可以部署单机的站点,在分布式系统中,几十上百的服务,如果使用单机这种部署方式,会投入很高的人力,同时出错的几率也大 。所以服务器虚拟化技术Docker也称为如今的必备技术了,Docker可以帮助运维人员实行快速部署,批量维护.使用Kubernetes实现自动化部署、大规模可伸缩、应用容器管理 。
容器化技术是近两年超级火的一个专题,通过容器化技术可以对环境进行打包,方便移植,大大提高了开发效率 。该板块包括容器化技术Docker和其平台管理引擎Kubernetes,其中,Docker 是一个开源的应用容器引擎 , 可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化 。而Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效 。通过该板块的学习,你可以通过上述技术快速搭建环境,节省开发时间,提高开发效率 。
技术树
十二、业务解决方案
企业开发中会遇到一些通用的业务场景 , 诸如:搜索引擎、缓存、定时任务、工作流、报表导出、日志管理、系统监控等 , 那么这些通用的解决方案也有现成优秀的免费开源中间件,可供使用 。诸如:ElasticSearch、Lucene、Solr、redis、MongoDB、slf4J、ECharts、Quartz、POI等 。业务解决方案课程的业务方案和技术难点,解决了企业开发中90%以上的痛点和难点 。
虽然我们已经具备了基础技术和高阶技术,但是要想与企业开发相接轨,还需要对实际项目的业务解决方案进行探究 。而此版块就是在实际业务场景中的真实解决方案集合,常用的业务解决方案有如下:搜索业务场景解决方案、日志收集与分析场景解决方案、工作流引擎场景解决方案、任务调度场景解决方案、地图开发平台场景解决方案、支付开放平台场景解决方案、图表可视化场景解决方案 。通过分析实际业务来学习这个解决方案技术集 , 完全可以达到中级甚至高级工程师水平 。
技术树
用java求最大子段和import java.util.Scanner;
public class tryfirst {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
int n;
int []a;
a=new int [10];
Scanner in = new Scanner(System.in);
int ThisSum,MaxSum;
ThisSum=MaxSum=0;
n=in.nextInt();
for(i=0;in;i)
{
a[i]=in.nextInt();
}
for(i=0;in;i)
{
ThisSum =a[i];
if(ThisSumMaxSum)
MaxSum=ThisSum;
else if(ThisSum0)
ThisSum=0;
}
System.out.print(MaxSum);
}
}
java编程规范?。。?/h2>名称 Java语言编码规范(Java Code Conventions)
简介 本文档讲述了Java语言的编码规范,较之陈世忠先生《c编码规范》的浩繁详?。?此文当属短小精悍了 。而其中所列之各项条款 , 从编码风格,到注意事项,不单只Java,对于其最大子段和代码java他语言 , 也都很有借鉴意义 。因为简短,所以易记,大家不妨将此作为handbook,常备案头 , 逐一对验 。
1 介绍
1.1 为什么要有编码规范
1.2 版权声明
2 文件名
2.1 文件后缀
2.2 常用文件名
3 文件组织
3.1 Java源文件
3.1.1 开头注释
3.1.2 包和引入语句
3.1.3 类和接口声明
4 缩进排版
4.1 行长度
4.2 换行
5 注释
5.1 实现注释的格式
5.1.1 块注释
5.1.2 单行注释
5.1.3 尾端注释
5.1.4 行末注释
5.2 文挡注释
6 声明
6.1 每行声明变量的数量
6.2 初始化
6.3 布局
6.4 类和接口的声明
7 语句
7.1 简单语句
7.2 复合语句
7.3 返回语句
7.4 if,if-else,if else-if else语句
7.5 for语句
7.6 while语句
7.7 do-while语句
7.8 switch语句
7.9 try-catch语句
8 空白
8.1 空行
8.2 空格
9 命名规范
10 编程惯例
10.1 提供对实例以及类变量的访问控制
10.2 引用类变量和类方法
10.3 常量
10.4 变量赋值
10.5 其它惯例
10.5.1 圆括号
10.5.2 返回值
10.5.3 条件运算符"?"前的表达式"?"前的表达式
10.5.4 特殊注释
11 代码范例
11.1 Java源文件范例
1 介绍(Introduction)
1.1 为什么要有编码规范(Why Have Code Conventions)
编码规范对于程序员而言尤为重要,有以下几个原因最大子段和代码java:
- 一个软件的生命周期中,80%的花费在于维护
- 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
- 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码
- 如果你将源码作为产品发布 , 就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品
为了执行规范,每个软件开发人员必须一致遵守编码规范 。每个人 。
1.2 版权声明(Acknowledgments)
本文档反映的是Sun MicroSystems公司 , Java语言规范中的编码标准部分 。主要贡献者包括:Peter King,Patrick Naughton,Mike DeMoney , Jonni Kanerva,Kathy Walrath以及Scott Hommel 。
本文档现由Scott Hommel维护 , 有关评论意见请发至shommel@eng.sun.com
2 文件名(File Names)
这部分列出了常用的文件名及其后缀 。
2.1 文件后缀(File Suffixes)
Java程序使用下列文件后缀:
文件类别 文件后缀
Java源文件 .java
Java字节码文件 .class
2.2 常用文件名(Common File Names)
常用的文件名包括:
文件名 用途
GNUmakefile makefiles的首选文件名 。我们采用gnumake来创建(build)软件 。
README 概述特定目录下所含内容的文件的首选文件名
3 文件组织(File Organization)
一个文件由被空行分割而成的段落以及标识每个段落的可选注释共同组成 。超过2000行的程序难以阅读,应该尽量避免 。"Java源文件范例"提供了一个布局合理的Java程序范例 。
3.1 Java源文件(Java Source Files)
每个Java源文件都包含一个单一的公共类或接口 。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件 。公共类必须是这个文件中的第一个类或接口 。
Java源文件还遵循以下规则:
- 开头注释(参见"开头注释")
- 包和引入语句(参见"包和引入语句")
- 类和接口声明(参见"类和接口声明")
3.1.1 开头注释(Beginning Comments)
所有的源文件都应该在开头有一个C语言风格的注释,其中列出类名、版本信息、日期和版权声明:
/*
* Classname
*
* Version information
*
* Date
*
* Copyright notice
*/
3.1.2 包和引入语句(Package and Import Statements)
在多数Java源文件中,第一个非注释行是包语句 。在它之后可以跟引入语句 。例如:
package java.awt;
import java.awt.peer.CanvasPeer;
3.1.3 类和接口声明(Class and Interface Declarations)
下表描述了类和接口声明的各个部分以及它们出现的先后次序 。参见"Java源文件范例"中一个包含注释的例子 。
类/接口声明的各部分 注解
1 类/接口文档注释(/**……*/) 该注释中所需包含的信息,参见"文档注释"
2 类或接口的声明
3 类/接口实现的注释(/*……*/)如果有必要的话 该注释应包含任何有关整个类或接口的信息 , 而这些信息又不适合作为类/接口文档注释 。
4 类的(静态)变量 首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符,access modifier),最后是私有变量 。
5 实例变量 首先是公共级别的,随后是保护级别的,再后是包一级别的(没有访问修饰符) , 最后是私有级别的 。
6 构造器
7 方法 这些方法应该按功能,而非作用域或访问权限,分组 。例如,一个私有的类方法可以置于两个公有的实例方法之间 。其目的是为了更便于阅读和理解代码 。
4 缩进排版(Indentation)
4个空格常被作为缩进排版的一个单位 。缩进的确切解释并未详细指定(空格 vs. 制表符) 。一个制表符等于8个空格(而非4个) 。
4.1 行长度(Line Length)
尽量避免一行的长度超过80个字符 , 因为很多终端和工具不能很好处理之 。
注意:用于文档中的例子应该使用更短的行长,长度一般不超过70个字符 。
4.2 换行(Wrapping Lines)
当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:
- 在一个逗号后面断开
- 在一个操作符前面断开
- 宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开
- 新的一行应该与上一行同一级别表达式的开头处对齐
- 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边 , 那就代之以缩进8个空格 。
以下是断开方法调用的一些例子:
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));
以下是两个断开算术表达式的例子 。前者更好,因为断开处位于括号表达式的外边 , 这是个较高级别的断开 。
longName1 = longName2 * (longName3longName4 - longName5)
4 * longname6; //PREFFER
longName1 = longName2 * (longName3longName4
- longName5)4 * longname6; //AVOID
以下是两个缩进方法声明的例子 。前者是常规情形 。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右 , 所以代之以缩进8个空格
//CONVENTIONAL INDENTATION
someMethod(int anArg, Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
//INDENT 8 SPACES TO AVOID VERY DEEP INDENTS
private static synchronized horkingLongMethodName(int anArg,
Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲 。比如:
//DON’T USE THIS INDENTATION
if ((condition1condition2)
|| (condition3condition4)
||!(condition5condition6)) { //BAD WRAPS
doSomethingAboutIt();//MAKE THIS LINE EASY TO MISS
}
//USE THIS INDENTATION INSTEAD
if ((condition1condition2)
|| (condition3condition4)
||!(condition5condition6)) {
doSomethingAboutIt();
}
//OR USE THIS
if ((condition1condition2) || (condition3condition4)
||!(condition5condition6)) {
doSomethingAboutIt();
}
这里有三种可行的方法用于处理三元运算表达式:
alpha = (aLongBooleanExpression) ? beta : gamma;
alpha = (aLongBooleanExpression) ? beta
: gamma;
alpha = (aLongBooleanExpression)
? beta
: gamma;
5 注释(Comments)
Java程序有两类注释:实现注释(implementation comments)和文档注释(document comments) 。实现注释是那些在C中见过的 , 使用/*...*/和//界定的注释 。文档注释(被称为"doc comments")是Java独有的,并由/**...*/界定 。文档注释可以通过javadoc工具转换成HTML文件 。
实现注释用以注释代码或者实现细节 。文档注释从实现自由(implementation-free)的角度描述代码的规范 。它可以被那些手头没有源码的开发人员读懂 。
注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息 。注释应该仅包含与阅读和理解程序有关的信息 。例如,相应的包如何被建立或位于哪个目录下之类的信息不应包括在注释中 。
在注释里 , 对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息 。多余的的注释很容易过时 。通常应避免那些代码更新就可能过时的注释 。
注意:频繁的注释有时反映出代码的低质量 。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰 。
注释不应写在用星号或其他字符画出来的大框里 。注释不应包括诸如制表符和回退符之类的特殊字符 。
5.1 实现注释的格式(Implementation Comment Formats)
程序可以有4种实现注释的风格:块(block)、单行(single-line)、尾端(trailing)和行末(end-of-line) 。
5.1.1 块注释(Block Comments)
块注释通常用于提供对文件 , 方法,数据结构和算法的描述 。块注释被置于每个文件的开始处以及每个方法之前 。它们也可以被用于其他地方,比如方法内部 。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式 。
块注释之首应该有一个空行,用于把块注释和代码分割开来,比如:
/*
* Here is a block comment.
*/
块注释可以以/*-开头,这样indent(1)就可以将之识别为一个代码块的开始 , 而不会重排它 。
/*-
* Here is a block comment with some very special
* formatting that I want indent(1) to ignore.
*
*one
*two
*three
*/
注意:如果你不使用indent(1) , 就不必在代码中使用/*- , 或为他人可能对你的代码运行indent(1)作让步 。
参见"文档注释"
5.1.2 单行注释(Single-Line Comments)
短注释可以显示在一行内,并与其后的代码具有一样的缩进层级 。如果一个注释不能在一行内写完,就该采用块注释(参见"块注释") 。单行注释之前应该有一个空行 。以下是一个Java代码中单行注释的例子:
if (condition) {
/* Handle the condition. */
...
}
5.1.3 尾端注释(Trailing Comments)
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释 。若有多个短注释出现于大段代码中,它们应该具有相同的缩进 。
以下是一个Java代码中尾端注释的例子:
if (a == 2) {
return TRUE;/* special case */
} else {
return isPrime(a);/* works only for odd a */
}
5.1.4 行末注释(End-Of-Line Comments)
注释界定符"//" , 可以注释掉整行或者一行中的一部分 。它一般不用于连续多行的注释文本最大子段和代码java;然而,它可以用来注释掉连续多行的代码段 。以下是所有三种风格的例子:
if (foo1) {
// Do a double-flip.
...
}
else {
return false;// Explain why here.
}
//if (bar1) {
//
//// Do a triple-flip.
//...
//}
//else {
//return false;
//}
5.2 文档注释(Documentation Comments)
注意:此处描述的注释格式之范例,参见"Java源文件范例"
若想了解更多,参见"How to Write Doc Comments for Javadoc",其中包含了有关文档注释标记的信息(@return, @param, @see):
若想了解更多有关文档注释和javadoc的详细资料,参见javadoc的主页:
文档注释描述Java的类、接口、构造器,方法,以及字段(field) 。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员 。该注释应位于声明之前:
/**
* The Example class provides ...
*/
public class Example { ...
注意顶层(top-level)的类和接口是不缩进的,而其成员是缩进的 。描述类和接口的文档注释的第一行(/**)不需缩进;随后的文档注释每行都缩进1格(使星号纵向对齐) 。成员,包括构造函数在内,其文档注释的第一行缩进4格,随后每行都缩进5格 。
若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释(见5.1.1)或紧跟在声明后面的单行注释(见5.1.2) 。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中 。
文档注释不能放在一个方法或构造器的定义块中,因为Java会将位于文档注释之后的第一个声明与其相关联 。
6 声明(Declarations)
6.1 每行声明变量的数量(Number Per Line)
推荐一行一个声明 , 因为这样以利于写注释 。亦即,
int level;// indentation level
int size;// size of table
要优于 ,
int level, size;
不要将不同类型变量的声明放在同一行,例如:
int foo,fooarray[];//WRONG!
注意:上面的例子中,在类型和标识符之间放了一个空格,另一种被允许的替代方式是使用制表符:
intlevel;// indentation level
intsize;// size of table
Object currentEntry;// currently selected table entry
6.2 初始化(Initialization)
尽量在声明局部变量的同时初始化 。唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算 。
6.3 布局(Placement)
只在代码块的开始处声明变量 。(一个块是指任何被包含在大括号"{"和"}"中间的代码 。)不要在首次用到该变量时才声明之 。这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性 。
void myMethod() {
int int1 = 0;// beginning of method block
if (condition) {
int int2 = 0;// beginning of "if" block
...
}
}
该规则的一个例外是for循环的索引变量
for (int i = 0; imaxLoops; i) { ... }
避免声明的局部变量覆盖上一级声明的变量 。例如,不要在内部代码块中声明相同的变量名:
int count;
...
myMethod() {
if (condition) {
int count = 0;// AVOID!
...
}
...
}
6.4 类和接口的声明(Class and Interface Declarations)
当编写类和接口是,应该遵守以下格式规则:
- 在方法名与其参数列表之前的左括号"("间不要有空格
- 左大括号"{"位于声明语句同行的末尾
- 右大括号"}"另起一行,与相应的声明语句对齐,除非是一个空语句,"}"应紧跟在"{"之后
class Sample extends Object {
int ivar1;
int ivar2;
Sample(int i, int j) {
ivar1 = i;
ivar2 = j;
}
int emptyMethod() {}
...
}
- 方法与方法之间以空行分隔
7 语句(Statements)
7.1 简单语句(Simple Statements)
每行至多包含一条语句 , 例如:
argv;// Correct
argc--;// Correct
argv; argc--;// AVOID!
7.2 复合语句(Compound Statements)
复合语句是包含在大括号中的语句序列,形如"{ 语句 }" 。例如下面各段 。
- 被括其中的语句应该较之复合语句缩进一个层次
- 左大括号"{"应位于复合语句起始行的行尾;右大括号"}"应另起一行并与复合语句首行对齐 。
- 大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分 。这样便于添加语句而无需担心由于忘了加括号而引入bug 。
7.3 返回语句(return Statements)
一个带返回值的return语句不使用小括号"()",除非它们以某种方式使返回值更为显见 。例如:
return;
return myDisk.size();
return (size ? size : defaultSize);
7.4 if,if-else,if else-if else语句(if, if-else, if else-if else Statements)
if-else语句应该具有如下格式:
if (condition) {
statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else{
statements;
}
注意:if语句总是用"{"和"}"括起来,避免使用如下容易引起错误的格式:
if (condition) //AVOID! THIS OMITS THE BRACES {}!
statement;
7.5 for语句(for Statements)
一个for语句应该具有如下格式:
for (initialization; condition; update) {
statements;
}
一个空的for语句(所有工作都在初始化,条件判断,更新子句中完成)应该具有如下格式:
for (initialization; condition; update);
当在for语句的初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致复杂度提高 。若需要 , 可以在for循环之前(为初始化子句)或for循环末尾(为更新子句)使用单独的语句 。
7.6 while语句(while Statements)
一个while语句应该具有如下格式
while (condition) {
statements;
}
一个空的while语句应该具有如下格式:
while (condition);
7.7 do-while语句(do-while Statements)
一个do-while语句应该具有如下格式:
do {
statements;
} while (condition);
7.8 switch语句(switch Statements)
一个switch语句应该具有如下格式:
switch (condition) {
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
每当一个case顺着往下执行时(因为没有break语句) , 通常应在break语句的位置添加注释 。上面的示例代码中就包含注释/* falls through */ 。
7.9 try-catch语句(try-catch Statements)
一个try-catch语句应该具有如下格式:
try {
statements;
} catch (ExceptionClass e) {
statements;
}
一个try-catch语句后面也可能跟着一个finally语句,不论try代码块是否顺利执行完,它都会被执行 。
try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}
8 空白(White Space)
8.1 空行(Blank Lines)
空行将逻辑相关的代码段分隔开 , 以提高可读性 。
下列情况应该总是使用两个空行:
- 一个源文件的两个片段(section)之间
- 类声明和接口声明之间
下列情况应该总是使用一个空行:
- 两个方法之间
- 方法内的局部变量和方法的第一条语句之间
- 块注释(参见"5.1.1")或单行注释(参见"5.1.2")之前
- 一个方法内的两个逻辑段之间,用以提高可读性
8.2 空格(Blank Spaces)
下列情况应该使用空格:
- 一个紧跟着括号的关键字应该被空格分开,例如:
while (true) {
...
}
注意:空格不应该置于方法名与其左括号之间 。这将有助于区分关键字和方法调用 。
- 空白应该位于参数列表中逗号的后面
- 所有的二元运算符,除了".",应该使用空格将之与操作数分开 。一元操作符和操作数之间不因该加空格 , 比如:负号("-")、自增("")和自减("--") 。例如:
a= cd;
a = (ab) / (c * d);
while (d= s) {
n;
}
printSize("size is "foo"\n");
- for语句中的表达式应该被空格分开,例如:
for (expr1; expr2; expr3)
- 强制转型后应该跟一个空格,例如:
myMethod((byte) aNum, (Object) x);
myMethod((int) (cp5), ((int) (i3))1);
9 命名规范(Naming Conventions)
命名规范使程序更易读,从而更易于理解 。它们也可以提供一些有关标识符功能的信息,以助于理解代码,例如,不论它是一个常量,包 , 还是类 。
标识符类型 命名规则 例子
包(Packages) 一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166标准所指定的标识国家的英文双字符代码 。包名的后续部分根据不同机构各自内部的命名规范而不尽相同 。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(login names) 。com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
类(Classes) 命名规则:类名是个一名词 , 采用大小写混合的方式,每个单词的首字母大写 。尽量使你的类名简洁而富于描述 。使用完整单词,避免缩写词(除非该缩写词被更广泛使用 , 像URL,HTML) class Raster;
class ImageSprite;
接口(Interfaces) 命名规则:大小写规则与类名相似 interface RasterDelegate;
interface Storing;
方法(Methods) 方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写 。run();
runFast();
getBackground();
变量(Variables) 除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写 。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的 。
变量名应简短且富于描述 。变量名的选用应该易于记忆 , 即 , 能够指出其用途 。尽量避免单个字符的变量名 , 除非是一次性的临时变量 。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c , d , e,它们一般用于字符型 。char c;
int i;
float myWidth;
实例变量(Instance Variables) 大小写规则和变量名相似,除了前面需要一个下划线 int _employeeId;
String _name;
Customer _customer;
常量(Constants) 类常量和ANSI常量的声明 , 应该全部大写,单词间用下划线隔开 。(尽量避免ANSI常量,容易引起错误) static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;
10 编程惯例(Programming Practices)
10.1 提供对实例以及类变量的访问控制(Providing Access to Instance and Class Variables)
若没有足够理由,不要把实例或类变量声明为公有 。通常,实例变量无需显式的设置(set)和获取(gotten) , 通常这作为方法调用的边缘效应 (side effect)而产生 。
一个具有公有实例变量的恰当例子,是类仅作为数据结构,没有行为 。亦即,若你要使用一个结构(struct)而非一个类(如果java支持结构的话) , 那么把类的实例变量声明为公有是合适的 。
java开发需要学习什么?java开发需要学习的内容有:\x0d\x0a初级部分\x0d\x0aJava OO程序设计基础最大子段和代码java,包括 J2sdk基础、Java面向对象基础、Java API使用、数据结构及算法基础、Java AWT图形界面程序开发;\x0d\x0aJ2SE平台Java程序设计最大子段和代码java,包括Swing图形程序设计, Socket网络应用程序设计,对象序列化最大子段和代码java,Java 常用数据结构,Applet , 流和文件,多线程程序设计;\x0d\x0aJava桌面系统项目开发,4~5人组成一个项目组,项目大小为(15人*工作日);\x0d\x0aLinux的基本操作,Linux下的Java程序开发,Linux系统的简单管理;\x0d\x0aOracle数据库 , 包括SQL/PLSQL;数据库和数据库设计;简单掌握ORACLE9i 数据库的管理;\x0d\x0a中级部分\x0d\x0aJava Web应用编程,包括 Java Oracle 编程,即JDBC;Java Web编程,包括JSP、Servlet,JavaBean;Java应用编程 , 包括Weblogic、Websphere、Tomcat;以及利用Jbuilder开发Java程序;\x0d\x0aMVC与Struts,学习业界通用的MVC设计模式和Struts架构;\x0d\x0aJava B/S商务项目开发,4~5人一个项目组,项目大小为(25人*工作日左右)\x0d\x0a高级部分\x0d\x0aJ2ME程序设计,包括J2EE程序、J2ME;Java高级程序设计(J2EE),包括J2EE体系结构和J2EE技术、EJB;Weblogic使用、 JBuilder开发;\x0d\x0aJava和XML , 包括Java Web Service,Java XML, 业界主流XML解析器程序设计;\x0d\x0a软件企业规范和软件工程,包括UML系统建模型和设计(Rational Rose 200x)软件工程和业界开发规范;CVS版本控制、Java Code书写规范;\x0d\x0aJ2EE商务应用系统项目开发 , 4~5人一个项目组,项目大小为(25人*工作日左右)\x0d\x0a??????????????????????????????????????\x0d\x0a\x0d\x0a看你问的问题,应该是对java很感兴趣,其实你可以自学java 。关于如何学习java,最大子段和代码java我刚才看到一篇很不错的文章,是一个农民工介绍自己如何自学java,并找到Java的工作 , 里面介绍了最大子段和代码java他的学习方法和学习过程,希望对你有帮助 。\x0d\x0a我是一名地地道道的农民工,生活在经济落后的农村,有一个哥哥和一个弟弟,父母都是地道的农民,日出而作,日落而息,我从小到大学习一直很好,从小学到高一都,成绩在全级一直名列前茅,这样我也顺利了考上省的重点高中,然而,每个学期开学是家里最为难的时候 , 每次交学费都让父母发愁许久,家里为了给我筹钱读书,都借了不少钱 , 才让我读上高中 。我知道我读到高中家里已经欠了好多债,为了减轻家里的负担,我选择了退学 。\x0d\x0a2009年我高一退学,为了给家里还债 , 干过建筑工地的小工,搞过塑料制品加工 , 送水工等等 。很工资都很低,一个月也就1000多,加上加班费一个月能拿2000多一点,我每个月都向家里寄回800-1000元,到了2011年末 , 一次偶然的机会我接触了Java,听说Java的前景挺不错,工资相对于我一个农民工来说简直是天文数字 , 于是我在新华书店买了几本Java的书,尽管白天辛苦工作,晚上回来还是坚持看书 , 但有于基础太差很多都很不明白,但还是坚持看,一有看1-2个小时Java的书,看着看着许多基础都慢慢的学会了,但那些比较难的还是看不懂 , 后来还买了有些关于框架的书,还是看不懂 , 这样断断续续的持续了半年多,觉得自己Java的基础都差不多懂了,但框架还是看不懂,还有最缺的项目经验 , 看了很多招聘Java程序员的简介都要项目经验,相对我一个农民工来连框架都弄不明白 , 想找一份Java工作对我来说简直是奢侈 。我只想学Java,并不敢想以后能从事Java的工作 。\x0d\x0a有一次,在百度上看到一篇让我很鼓舞的文章,是一个Java高手介绍在没有基础的朋友怎么自学入门Java,文章写的很好,包含了如何学习,该怎么学习,他提到一个方法就是看视频,因为看书实在太枯燥和费解的 , 不少是我们也看不懂,这点我真的很认同 , 我自己看书都看了很久才学会基础 。曾经有想过参加培训,但是上万元的培训费让我望而却步 , 我工资这么低,每个月还有向家里汇钱 , 加上城市消费比较高,虽然每个月只有几百剩下 , 但是相对于上万万学费和四个月的吃住费用逼我连想不敢想 。于是我决定看视频,我就去搜索Java的视频,虽然我零星的找到一些Java的视频,但是都不系统 。最重要连项目都没有 。后来我找到一份很好的视频,是IT学习联盟这个网站一套视频叫的教程还不错 , 很完整 。还赠送11个顶级企业项目 。价格很合理,于是我买下来 。\x0d\x0a于是开始了我的自学Java的路 , 收到光盘后,我就开始学习,刚开始学习还不错,是从零基础教起 , 老师幽默风趣而又轻松的课堂教课,使我发现原来学习JAVA并不是一件很难的事情 。因为我本来基础还不错,前面的基础看一篇我就过去了,到了框架,我觉不又不是很难,可能老师太牛了,他能把复杂的问题讲的比较通俗易懂 , 有些难点的地方我还是连续看了五六次,把他弄懂 。每天下午6点下班后,吃了饭 , 马上跑回家 。看视频,买了几本笔记本 。当时,为了编程还花几百元了台二手的台式电脑,配置一般,但编程是足够的 。一边看视频 , 一边记笔记,把重点都记下来,还一边跟着老师敲代码,为了能尽早学会Java 。每天都坚持学5-6个小时 。经常学到晚上一点多才睡觉 。星期六,日不用上班,每天7点多起床,学到晚上11,12点 。那段时间特别辛苦,特别累 。在学习Java的三个多月里,除了吃饭睡觉工作,剩余的时间都在学习,因为我知道自己的计算机基础不是很好,也没有学过什么计算机,只是学了些Java基?。喽杂谀切┛瓢嗟娜死此滴乙人歉冻龈嗟呐?。我只能咬紧牙关,坚持下去,我不能放弃 , 我要完成我的梦想,我要让我的家人过上好日子 。终于三个多月后我把Java教程里的内容和项目都学完了,在学项目的过程中我发现项目特别重要,他能把你学过的知识全部联系起来,能更好的理解你所学的知识 。还有学习过程中,动手很重要,要经常跟着老师动手敲,动手吧,跟着做,一行一行的跟着敲,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多 。如果遇到暂时对于一些思路不能理解的,动手写,先写代码,慢慢你就会懂了 。这套视频还赠送了11个顶级企业项目 , 对于我没有任何经验的人来说,这个太重要了,还有在学习项目是提升能力最快的方法 。项目能把所有的知识点全都连到一起了,不再是分散的,而是形成一个整体了 。那种感觉是仅仅深入钻研知识点而不写真实项目的人所不能体会的 。一个项目就是一根绳子可以把大片的知识串到一起 。就这样,我用了两个月也把项目给学完了 。其实学完教程差不错就达到就业水平,但是我可能觉得自己学历低还是把那11个顶级企业项目才去找工作 。\x0d\x0a接着我就到51job疯狂的投简历,因为我的学历问题,初中毕业,说真的,大公司没有人会要我 。所以我头的都是民营的小公司 , 我希望自己的努力有所回报 。没有想过几天后,就有面试了,但是第一次面试我失败了 , 虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比价严格 , 需要有一年的项目经验,所以我没有被选中 。后来陆续面试了几加公司 , 终于功夫不负有心人,我终于面试上了一家民营的企业 。公司规模比较?。?我的职务是Java程序员 。我想我比较幸运,经理看中我的努力 , 就决定吕勇我,开的工资是3500一个月 , 虽然我知道在北京3500只能过温饱的生化,但是我想我足够了,比起以前的工资好了些 , 以后可以多寄些钱回家 。我想只要我继续努力 。我工资一定会翻倍的 。把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有自卑 , 我们不比别人笨,只有我们肯努力,我们一样会成功 。\x0d\x0a\x0d\x0a??????????????????????????\x0d\x0a\x0d\x0a希望我的答案能帮助你 。
【最大子段和代码java 最大子段和的实现】最大子段和代码java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于最大子段和的实现、最大子段和代码java的信息别忘了在本站进行查找喔 。
推荐阅读
- 中国卡车游戏模拟2按键,中国卡车游戏模拟2按键怎么设置
- mysql虚拟列如何更新,mysql虚拟化
- sap版本管理,sap1809版本
- 世界手球赛模拟游戏,世界手球锦标赛
- c语言函数参数有什么区别 c语言函数的参数类型分类
- 谷歌ioflutter,谷歌相机
- 飞行游戏真实手机游戏,飞行游戏真实手机游戏有哪些
- 钉钉直播通用模式是什么,钉钉三种直播模式
- oracle怎么账户锁定 oracle 账户锁定