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

时间:2022-09-23 09:17:19

  以前我常说,公司用什么技术我就学什么。可是对于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#

    public string Name { get; set; }
public int Age { get; set; }

  再来看下Java

    public String name;
public int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

  感觉突然回归到了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.”中的任意一个字符都会有代码提示

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

myEclipse2017添加tomcat服务器

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

Eclipse运行时报错

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

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

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

<= abcdefghijklmnopqrstuvwxyz

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

配置完后要重启myEclipse

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

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

eclipse常用快捷键

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

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

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

myeclipse仿vs主题

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

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

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

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

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

关于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调试快捷键

F9            resume programe 恢复程序
Alt+F10 show execution point 显示执行断点
F8 Step Over 相当于eclipse的f6 跳到下一步
F7 Step Into 相当于eclipse的f5就是 进入到代码
Alt+shift+F7 Force Step Into 这个是强制进入代码
Shift+F8 Step Out 相当于eclipse的f8跳到下一个断点,也相当于eclipse的f7跳出函数
Atl+F9 Run To Cursor 运行到光标处
ctrl+shift+F9 debug运行java类
ctrl+shift+F10 正常运行java类
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学习第一篇&colon;变量,数据类型,运算符,流程控制&lpar;简介&rpar;

    一.安装和配置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. 从&period;Net到Java学习第二篇——IDEA and start spring boot

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

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

    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. webpack使用笔记

    webpack简介 CommonJS和AMD是用于JavaScript模块管理的两大规范,前者定义的是模块的同步加载,主要用于NodeJS:而后者则是异步加载,通过requirejs等适用于前端.np ...

  2. 孙鑫MFC学习笔记19:动态链接库

    1.动态链接库 2.静态库和动态库 3.使用动态链接库的好处 4.动态链接库编译需要导出,使用需要导入 __declspec(dllexport),__declspec(dllimport) 5.动态 ...

  3. oc程序编译【-framework Foundation 编译】

    第一种编译 第二种编译 -framework Foundation 编译

  4. expression&lt&semi;Func&lt&semi;object&comma;Bool&gt&semi;&gt&semi; 及 Func&lt&semi;oject&comma;bool&gt&semi;用法

    using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using ...

  5. ANTLR3完全参考指南读书笔记&lbrack;06&rsqb;

    前言 这段时间在公司忙的跟狗似的,但忙的是没多少技术含量的活儿. 终于将AST IR和tree grammar过了一遍,计划明天写完这部分的读书笔记.   内容 1 内部表示AST构建 2 树文法   ...

  6. (转)HTML5游戏如何挣钱?2条经验让你每款赚3万刀

    原文作者:Alexander Krug,是世界上最大的HTML5游戏平台的运营商SOFTGAMES的CEO. 现今苹果App Store当中的应用数量可以以海量来形容,最新发布的应用对排行榜的冲击力也 ...

  7. 开发中少不了的Fun -- 获取地址栏URL参数

    假设这是一个url地址 http://localhost:8080/a/b/c?a=1&b=2#abc,里面包含的部分: protocol: 'http:', // 协议 host: 'loc ...

  8. python 列表list相关知识

    List的元素可以是Python的任意数据类型(Boolean,Number,String,List,Dict,Set……) List同样可以使用索引和切片,切片得到的结果也是列表. print(li ...

  9. Oracle NVL空值处理函数

    --NVL空值处理函数 --需求:显示价格表中业主类型ID为1的价格记录 如果上限值为null,则显示9999999 ) from dual; select * from t_pricetable ) ...

  10. http超文本协议

    当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...