以前我常说,公司用什么技术我就学什么。可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的。”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保,连我自己都有点惊讶,居然有这么多家公司了。对于java的梗,这是有历史缘由的,大二的时候同一大波人去蓝杰参加java培训,当时一个空心的菱形怎么也写不出来,我写来写去就是一个实心的砖头,结果培训老师实在看不下去了,就说:“唉!你不适合搞java”,我看了下一同前去的几个同学一下子就都写出来了,搞得我一度开始怀疑自己的IQ。于是,我就跑去自学C#了,直到多年后,我才理解当时老师的话是:“你不适合做软件,而不单单是java”。没错,像我们这样的大专狗学习能力实在不行,当时同届的一个培训班学生如今在腾讯撸java都年薪150w了,还有什么好说的呢?在天朝你撸.net估计撸到死都难以拿那么高薪水的。那培训班专门收罗中南、湖大、师大的高材生去参加培训,学历和IQ、学习能力都不是我这样的复读大专狗可以比的,唉!。还有一个没有去转java的原因,就是看见我那些在深圳搞java的大学同学,加班太恐怖了,动不动就是什么996,搞得我害怕。可能因为都是大专狗,又是在撸码,没有去做java架构师吧,都是撸码的话,撸java和撸.net感觉差别真不大,所谓的高薪都是加班加出来的。相比而言,.net工资低点,上班也轻松许多,就那么点东西,分分钟完成开发任务,有必要装加班么?

  搜了下网上的招聘,架构师很少有.net和PHP的,大多数都是java系,所以如果要做架构师的话,java是你不得不面对的。.net和php目前不过是在夹缝中生存,做后端,java是首选,那么前端,现在越来越专业越来越强大了,曾经瘦前端的时代已经过了,前端和后端已经完全可以分庭抗礼,许多公司也都有了专门的前端,专业的人做专业的事,而.net和php却夹在中间,逐渐的失去了竞争优势。

  现在不想再逃避了,Java就Java吧,于是乎,Java学习之路就开始了。

  我在学习java的时候总是喜欢拿它们俩进行比较,由于C#太过优雅,以致于学习Java语法的过程中,无可避免的会各种吐槽。Java是参考的C++,C#是参考的C++和Java,继承了两者的一些语法优点,然后又添加了自己特有的许多语法糖。

  .net转java 就像学自动挡车的人,要去开手动挡的车。手动挡好还是自动挡好?

系列文章目录

从.Net到Java学习第一篇——开篇

从.Net到Java学习第二篇——IDEA and start spring boot

从.Net到Java学习第三篇——spring boot+mybatis+mysql

从.Net到Java学习第四篇——spring boot+redis

从.Net到Java学习第五篇——Spring Boot &&Profile &&Swagger2

从.Net到Java学习第六篇——SpringBoot+mongodb&Thymeleaf&模型验证

从.Net到Java学习第七篇——SpringBoot Redis 缓存穿透

从.Net到Java学习第八篇——SpringBoot实现session共享和国际化

从.Net到Java学习第九篇——SpringBoot下Thymeleaf

从.Net到Java学习第十篇——Spring Boot文件上传和下载

从.Net到Java学习第十一篇——SpringBoot登录实现

从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口

.......

我们不一样

  说好的属性呢?

    我呢个去?先来看下C#

  1. public string Name { get; set; }
  2. public int Age { get; set; }

  再来看下Java

  1. public String name;
  2. public int age;
  3. public String getName() {
  4. return name;
  5. }
  6. public void setName(String name) {
  7. this.name = name;
  8. }
  9. public int getAge() {
  10. return age;
  11. }
  12. public void setAge(int age) {
  13. this.age = age;
  14. }

  感觉突然回归到了C#2.0时代,整个人一下子穿越了。更奇葩的是String,首字母必须是大写,而其它基本类型又是首字母小写。再看java内置的一些包,import java.util.Scanner;什么情况,为啥,有些单词是首字母小写,最后面的类又变成大写,这是大驼峰还是小驼峰呢?

  C#用:表示继承和实现,Java又是extends又是implements的,这个还好比较好理解只是麻烦一点,居然把继承和实现分开了,关键字C#的base对应到了Java的supper。有一点奇怪的是Java的包和C#的命名空间还是有一点区别的,Java的包还会在磁盘上产生对应的物理文件夹。

  我又习惯性的var _age=2;,这下又报错了。神马情况?int _i=new int();,亚妮?又错了?要这样:Integer _i=new Integer(4);既然有了int为啥还要Integer呢,C#通通支持new int(),java要Integer才支持可空,而C#加上一个?就可以了。

  Java8之后开始支持Lambda了,这个C#在很多年前就支持了的语法特性。

  java的错误提示,真的跟成箴语差不多,这也太泛了吧,没有足够的经验,有时候一下子让人摸不着头脑,不像.net错误提示恨不得告诉你代码直接该怎么样写。有时候,如果一不小心,搞错个配置,TMD半天时间可能就搭那里了。

  千言万语先打住........

  语法熟悉之后,我就去熟悉IDE,Java常用的IDE目前主要是:eclipse.exe、MyEclipse 2017 CI、IntelliJ IDEA Community Edition 2018.1.4 x64。

  于是乎我不管三七二十一下载下来玩一下再说。eclipse绿色版免安装,MyEclipse要破解一下,IntelliJ IDEA暂时还没用,不好说。

现在就说下用eclipse和MyEclipse的感受,从名字就可以看出它们是同出一脉的,所以使用上也差不多。刚下载下来,我以为跟VS一样直接就可以来撸码了,才发现我又错了。配置、配置、配置。重要的事情说三遍,各种配置,估计是java的特性吧。各种配置我都弄好后,发现,智能提示又是一坨稀泥一样了。好吧,据说有快捷键,每次按Alt+/,我突然想,只要看见键盘上,这两个按键磨没了,肯定是java程序员吧。

  我熟记了这两个IDE各种常用的快捷键,不知道是我手小了、手指短了的缘故还是咋的,多操作几遍就手指抽筋,一只手按不完快捷键,两只手按的话,总有一只手要移动好远,按完再复位,对我这样十个手指头敲键盘的人来说,实在是有点不适应。还有就是这些个快捷键经常和各种输入法的快捷键冲突,你得去干掉输入法的一些快捷键配置。然后我又开始试下HTML、css和js的智能提示,又尝试了文件引用,我拿鼠标单击去拖放,直接卡死不动了,才发现不支持,好吧我又手敲一下,手敲的智能提示又实在太弱了,本来0.1s可以搞定的一个文件引用,我硬是敲了好几秒,总算是松了口气。

  VS里面许多快捷是组合快捷键,很难和其它软件的快捷键冲突,而且敲快捷键手指不需要移动,如Ctrl+K,Ctrl+S;Ctrl+K,Ctrl+U;等

  我去问我那些搞java的同学,他们怎么弄的,他们说就是这样弄的,习惯了就好了,感觉还好啊。我很不理解,同样的功能我用VS编码效率会高很多啊,开发效率低,对开发人员来说,意味着加班,难怪跟我那些搞java的同学比起来,我加的班,可能不到他们的百分之一(我基本上一年都加不了几次班,大多数情况都是准点;还有一个重要的原因,Java互联网公司多呗,现在.Net在许多互联网公司主要打打杂,传统企业有许多旧项目可能是.net的),难道真的是没用对比就没有伤害吗?可能是我对VS的使用太纯熟了,对eclipse和MyEclipse还不够熟吧。

我们其实又一样

java中有的.net基本上也有。h5、js、前端框架和数据库是共用的。又都是面向对象的高级语言,而且都是参考过C++,之后又相互模仿相互抄袭。至于各种框架,不过是各种设计模式的体现罢了,而设计模式对面向对象编程而言又是一样的。

.net java
一般处理程序 Servlet
aspx    jsp
C# Java
spring.net  spring
NHibernate Hibernate
asp.net mvc spring mvc
log4net log4
Quartz.Net Quartz
Lucene.Net Lucene
NVelocity Velocity
Mybatis.net Mybatis
... ...

MyEclipse如何设置自动提示

1、打开 MyEclipse  -> Window -> Perferences -> Java -> Editor -> Content Assist,在右边最下面一栏找到 auto-Activation ,下面有三个选项,找到第二个“Auto activation triggers for Java:”选项
2、在其后的文本框中会看到一个“.”存在。这表示:只有输入“.”之后才会有代码提示和自动补全,我们要修改的地方就是这里。把该文本框中的“.”换掉,换成“abcdefghijklmnopqrstuvwxyz.”,这样,你在MyEclipse 里面写Java代码就可以做到按“abcdefghijklmnopqrstuvwxyz.”中的任意一个字符都会有代码提示

myEclipse2017添加tomcat服务器

https://blog.csdn.net/weiyongle1996/article/details/75195918

Eclipse运行时报错

JDK是32位,而IDE是64位所致。

MyEclipse 2016 上配置HTML5的标签自动提示

<= abcdefghijklmnopqrstuvwxyz

配置完后要重启myEclipse

eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能?

eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能?

eclipse常用快捷键

Ctrl+Alt+H:查看当前类在哪些地方被继承。

ctrl+shift+g:查看当前类在哪些地方被引用。

myeclipse仿vs主题

作为.Net程序员,我实在是不惯MyEclipse上面的各种主题,于是我自己做了一个跟VS相似的主题

主题包下载地址:https://download.csdn.net/download/zouyujie1127/10457891

下载主题包,然后打开myeclipse导入即可。

关于MyEclipse 2017文本编辑器设置html代码提示功能更换主题颜色

关于MyEclipse 2017文本编辑器设置html代码提示功能更换主题颜色

Servlet使用注解配置URl提示404错误

Servlet使用注解配置URl提示404错误

IntelliJ IDEA常见问题

IntelliJ IDEA 编译Java程序出现 'Error:java: 无效的源发行版: 9' 的解决方案

idea 自动导入包 快捷键

Intellij IDEA 最新旗舰版注册激活破解(2018亲测,可用)

IntelliJ IDEA 缺少 javax 包 支持

IDEA快捷键

NSIS Error:运行安装包出现installer integrity check has failed错误解决方法

[Intellij] 在IntelliJ IDEA 中创建运行web项目

Intellij2016.2 设置maven自动提示

【问题解决】IDEA右键选择new新文件的时候没有JSP文件选项解决

IntelliJ IDEA开发Java web项目,JSP无代码提示或自动补全 问题

IDEA 通过maven 创建项目问题解决

IDEA调试快捷键

  1. F9 resume programe 恢复程序
  2. Alt+F10 show execution point 显示执行断点
  3. F8 Step Over 相当于eclipsef6 跳到下一步
  4. F7 Step Into 相当于eclipsef5就是 进入到代码
  5. Alt+shift+F7 Force Step Into 这个是强制进入代码
  6. Shift+F8 Step Out 相当于eclipsef8跳到下一个断点,也相当于eclipsef7跳出函数
  7. Atl+F9 Run To Cursor 运行到光标处
  8. ctrl+shift+F9 debug运行java
  9. ctrl+shift+F10 正常运行java
  10. alt+F8 debug时选中查看值

熟悉语法、IDE之后,剩下的就是其系统自身的各种类库,和其生态体系中的各种框架了。一开始下载IDEA的时候弄错了,下载的免费版,好多功能没有,后面重新下载了企业版。

接下来学习spring boot+mybatis+maven

从.Net到Java学习第一篇——开篇的更多相关文章

  1. Java 学习 第一篇

    1:Java文档注释:使用javadoc工具可以提取程序中文档注释来生成API文档:javadoc命令的基本用法:javadoc 选项 java源文件/包javadoc -d {} -windowti ...

  2. java 学习第一篇简单基础

    Java基础 Java Java 和C#有着极为相似的语法. 和C#都是面向对象的高级程序语言. JAVA是一个开源,公开的语言,有着极其丰富的开源库和其他资源. JAVA分类 JAVA分SE EE ...

  3. Java学习第一篇:变量,数据类型,运算符,流程控制(简介)

    一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...

  4. Java学习第一篇 — 字符串

    package StringTest; public class TestString { public static void main(String[] args){ // String str= ...

  5. 从.Net到Java学习第二篇——IDEA and start spring boot

    从.Net到Java学习第一篇——开篇 所谓工欲善其事,必先利其器,做java开发也一样,在比较了目前最流行的几个java IDE(eclipse,myeclipse.IDEA)之后,我果断选择IDE ...

  6. Java并发包下锁学习第一篇:介绍及学习安排

    Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...

  7. JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇

    JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...

  8. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  9. Java 学习第一步-JDK安装和Java环境变量配置

    Java学习第一步——JDK安装及Java环境变量配置 [原文]  2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋 ...

随机推荐

  1. Java软件工程师面试常见问题集锦之一

    1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象 ...

  2. 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制

    今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ...

  3. TensorFlow.org教程笔记(一)Tensorflow初上手

    本文同时也发布在自建博客地址. 本文翻译自www.tensorflow.org的英文教程. 本文档介绍了TensorFlow编程环境,并向您展示了如何使用Tensorflow解决鸢尾花分类问题. 先决 ...

  4. ansible基础-加密

    一 简介 注:本文demo使用ansible2.7稳定版 众所周知,ansible是很火的一个自动化部署工具,在ansible控制节点内,存放着当前环境服务的所有服务的配置信息,其中自然也包括一些敏感 ...

  5. [Swift]LeetCode5. 最长回文子串 | Longest Palindromic Substring

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  6. [Swift]LeetCode740. 删除与获得点数 | Delete and Earn

    Given an array nums of integers, you can perform operations on the array. In each operation, you pic ...

  7. Elasticsearch基础知识分享

    1. Elasticsearch背景介绍 Elasticsearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elast ...

  8. BBS论坛(二十一)

    21.1.编辑轮播图功能完成 (1)cms_banners.html 把属性绑定到<tr>上面,方便找到各属性的值 <tbody> {% for banner in banne ...

  9. CDN边缘节点容器调度实践(上)

    又拍云容器云是基于 Docker 的分布式计算资源网,节点分散在全国各地及海外,提供电信.联通.移动和多线网络,融合微服务.DevOps 理念,满足精益开发.运维一体化,大幅降低分布式计算资源构建复杂 ...

  10. Zabbix4.0.3解决中文乱码

    字体下载地址:https://github.com/hejianlai/Zabbix/raw/master/font/msyh.ttf放到以下目录,可能你的路径和我的不一样用find查出来cd /us ...