Java很难吗?
如果你在使用java的过程开始慢慢感觉到难度的话,恭喜你,这说明你已经开始接触到java这门语言或者说程序设计当中的一些核心概念了。
为什么这么说呢?任何编程语言和自然语言一样,范式和语法往往是最基础也最容易上手的,这也是用好这么语言的基础。但是,熟练掌握语法和范式并不能让你能很好的驾驭这门语言。比如学习英语,我们能够相对轻松的熟记大量单词和语法,但是却难以在日常对话中流利的使用英语与人交流,即便是英文写作,也成为了大多数人英文学习者的短板。如果问你为什么中国人学不好英文,我想大多数人能够非常轻易的给出合理的回答:1. 缺少在真实语言环境中的大量练习;2. 对于英文背后的文化内涵不够了解。
实际上,我想这个答案也能大致回答你的问题。我们之所以会觉得java难学,无非是两个原因:1.缺少在实际应用中大量使用java的经历;2. 对于java这门语言背后的编程思想了解不多。java和英语一样,除了基础的语法和范式之外,还有很多技巧性的使用方法。比如classloader,reflection以及内存管理,除非是有实际的需求,否则我们很难会在编程过程中有意识的使用它们。但是,对这些高级概念的掌握对于深入理解java是非常帮助的。而只有通过在实际中的应用,我们才有机会去花时间理解这些概念。而至于java语言背后的编程思想,我想这与语言本身无关,即使使用的python这种公认对初学者友好的语言,我们也将在某一阶段不可避免的要问自己为什么程序要这样写,这背后是什么原因。要弄清楚这一点,就必须对于oop design pattern有一个基本的了解。当然,随着经验的积累,我想到最后很多人会从新开始认识算法和数据结构的重要性,甚至会想去了解file system和os的实施细节等等。
总之,就像我们说话一样,要想说的好首先必须大量练习,同时需要文化的积累。学习编程也是同样的道理
为什么觉得Java很难呢?是不是本身没有编码基础呢?还是刚进入这个行当根本还不知道怎么学习呢?当然Java相对某些开发工具来说确实是比较难的。但为什么这么多人使用Java呢?除了开源红利以外,其实从开发工具的难易度或者理解度来说,JAVA还是相对比较容易入门,而且它的语法更接近于很自然的表达方式,更容易理解。但如果要深入进去作为高手,那确实还是不容易的。Java涉及的面很广,而且框架有些也让人生畏,可能让人感觉Java很难。
其实Java入门是比较容易的。来看看Java的基础知识。
一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
基本语法
编写Java程序时,应注意以下几点:
大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。
Java标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于Java标识符,有以下几点需要注意:
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合
关键字不能用作标识符
标识符是大小写敏感的
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary
Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, strictfp在后面的章节中我们会深入讨论Java修饰符。
Java变量
Java中主要有如下几种类型的变量
局部变量
类变量(静态变量)
成员变量(非静态变量)
Java数组
数组是储存在堆上的对象,可以保存多个同类型变量。
Java枚举
Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
Java 空行
空白行,或者有注释的行,Java编译器都会忽略掉。
继承
在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。
接口
在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
标识符可以用来标识变量名、类名、类中的方法名和文件名等。
命名规则:
(1) 由字母、数字、下划线、$组成,不能以数字开头。
(2) 大小写敏感。
(3) 不得使用java中的关键字和保留字。
习惯:
(1) 标识符要符合语义信息。
(2) 包名所有字母小写。
(3) 类名每个单词首字母大写,其它小写,如:TarenaStudent。
(4) 变量和方法:第一个单词小写,从第二个单词开始首字母大写,如:tarenaStudent。
(5) 常量:所有字母大写,每个单词之间用 _ 连接。
Java的八种基本类型(按字节来分):
boolean 布尔型 1个字节 8bit(8位)
byte 字节类型 1个字节
char 字符类型 2个字节
short 短整型 2个字节
int 整型 4个字节
float 浮点型(单精度)4个字节
long 长整型 8个字节
double 双精度类型 8个字节
Java中默认的整数类型是int,如果要定义为long ,则要在数值后加上L或者l
默认的浮点型是双精度浮点,如果要定义float,则要在数值后面加上f或者F
一个字节等于8位,1个字节等于256个数。2^8
一个英文字母或者阿拉伯数字占一个字节
一个汉字占2个字节
上述是Java最基本的入门知识,其实学习上面的只是并不难,稍微花些时间就可以弄明白,但要进入实战却又显得不足,需要话更多的时间学习更多的比如:开发框架,设置,还有另外的扩展知识,还有程序结构等等。任何一门开发工具都不简单,都要花时间深入搞懂基础,才能走得更高更远。