众所周知,程序员须要快速学习新知识,因此就有了《21天精通C++》和《MySQL-从删库到跑路》这样的书籍,Java做为更“高级”的语言也不该该落后,因此我就写一个《极·Java速成教程》,让想学的人可以快速学习Java(手斜)。
本文大概分三大部分:java
本文请逐字理解文本内容,本文仅供理解和学习Java编程,不可做为概念性参考程序员
本文是阅读《Java编程思想》后的读后感编程
Java是一个从设计之初就遵循面向对象思想的语言,所以而有着诸多面向对象的特性,那么问题来了,面向对象指的是什么?
面向对象,不是指的脸超女友,而是说编程的时候,你所操做的一切事物都是“对象”,假如说Java程序员是个搬砖工,那Java操做的对象就是搬砖工手里的砖,一块砖就是一个对象,一堆转就是一堆对象,诸多一样的对象能够用一个概念来归纳,这个概念就是“类”。
先在咱们能够思考砖是个什么东西,也就是砖的“概念(类)”:砖,由土烧制而成,能够用来砌墙、铺地和垫桌角,有必定的重量和体积,能被搬被砌。仔细分析这句定义,能够发现能分为4小句:数组
将许多个“砖”同样的对象搭配组合,堆垒到一块儿,就能够构建起程序的这栋房屋,实现总体的功能。函数
Java中的类有几个特色学习
只要想好这个类和它的对象应该怎么设计,怎么正常运行便可,其余语言的包袱,甩掉便可设计
当Java使用者须要一个对象时,这个对象在内存中的位置时咱们不用管也无法管的。但这个对象是怎么来的,倒是能够思考的。就像房子是砖垒成的,砖是由土烧成的,那土是什么构成的呢,这么追究下去,追究到最后就成了重子和轻子了,可是咱们没必要追求这么细,就像Java中咱们知道一切对象都有Object这个“祖宗”,可是咱们不须要凡事都请动这个祖宗,它有几个子女是咱们经常使用的,也就是“基本类型”:code
类型 | 大小 | 包装器 | 初始值 |
---|---|---|---|
boolean | true/false | Boolean | false |
char | 16 bit | Character | '\u0000' |
byte | 8 bit | Byte | (byte)0 |
short | 16 bit | Short | (short)0 |
int | 32 bit | Integer | 0 |
long | 64 bit | Long | 0L |
float | 32 bit | Float | 0.0f |
double | 64 bit | Double | 0.0d |
void | Void | void |
这些基本类型的大小都与其位数n有关,最小值为-2n-1,最大值为2n-1-1,float和double遵循IEEE754标准。
除了基本类型,还有字符串String,高精度整数BigInteger和高精度浮点数BigDecimal等常见类。对象
一个对象,给他个称号,就能够根据这个名字喊他作各类事,就像家里人能够喊你小名让你干活同样。可是当出了家里,可能有好多人跟你重名,这会带来困扰,所以是不被容许的,而在外面叫你的小名,这也会带来尴尬,也就是说,这个名字超出了做用域,在Java中,一个称号(或者说引用)的做用域是从这个命名的声明到所在花括号的结尾。固然若是不关心这一点也没问题,由于IDE会提醒你这里出了问题。
当一个对象有了它的称呼之后,就能够安排他作好多的事情了,不管谁喊,只要是喊到,就能够用。在做用域范围内的全部调用均可以经过这个名字实行,而你也能够再给这个对象起另外一个名字,这多个名字都是指的同一个对象,当处理不当时,这会带来一些问题,好比一个喊你张三的人给你图了个花脸,别人喊你李四把你喊过来之后也会看到一个花脸。
对于一堆相同类型的对象,能够用一个容器装住他们,方便咱们管理和使用,Java中提供了多种类型的容器,有最基本的数组,也就是一串连续的空间去装同样的对象,还有其余的诸如set和map之类的容器能够装,这一点能够在后面进行详细讨论。继承
运算符有其优先级,也有短路的特征。优先级就是说先乘除后加减,短路就是逻辑运算时当直接能够产生结果时就再也不继续运算。
运算符有如下几个:
+。加号,数字的累加,字符串的链接,将较小类型的数字提高为int类型。
-。减号,数字相减。负号。
*。乘号,数字相乘。
/。除号,数字相除,给出结果的整数部分,直接截断小数,不会四舍五入。
%。求余,数字相除求余数。
++自增,--自减,当出如今对象前面时先运算再输出值,当出如今对象后面时先输出值再运算。
>,<,>=,<=。大于,小于,大于等于,小于等于。顾名思义。
==判断相等,对于Java来讲,这是容易令人困扰的一点,由于除了在判断基本类型对象是否相等时之外,==仅仅为判断别名所指向的对象是否为同一个,而不关心对象的属性是否相等。若是要判断String等官方封装好的类型,就要用到equals()
方法,可是对于本身定义的类来讲,若是没有从新定义equals()
方法,就会和==同样,对引用对象进行判断,而不是对对象的属性进行判断。
&&,||,!。逻辑运算符与或非,对boolean值进行判断,两边都true时&&结果为真,两边有一个为true时||结果为真,!是对boolean对象的逻辑值进行颠倒。
&,|,^,~。按位操做符,对数字类型进行按位的与,或,异或和非操做,与,或,异或是对两个对象进行操做,非是对一个对象进行操做。
<<,>>,>>>。移位操做符,就是将操做数按位进行移位,A※※B就是将A往箭头方向移B位。若是是负数,>>在左侧补1,>>>在左侧补0。
=。数字赋值,或者是给一个对象起别名,或者是将另外一个别名添加到一个对象上。
+=,-=,*=,/=,&=,|=,^=,>>=,>>>=,<<=。比较相似,a※=b就是a=a※b。当>>>=byte和short时,转化成int进行处理而后截断,可能产生不正确的结果。
指数计数法:AeB表明了Ax10B,如1.39e-43f表明float的1.39x10-43。
?:。这是个三元运算符,如A?B:C就表示若是A的逻辑结果为真,就执行B,不然就执行C。
直接常量,就是直接的数,如200D,0x200。其规则是若是后面跟D表示double,F表示float,L表示long,前面跟0表示8进制数,0x表示16进制数。
(A)B能够将B强制转化为A类型,若是是从较小的类型转化为较大的类型,将不会带来问题,但若是是从较大的类型转化为较小的类型,则会带来信息丢失的问题。自定义类的转换同理。
对于浮点数来讲,强制转化为整形时,会舍弃小数部分,若是要获取舍入的结果,须要使用java.lang.Math中的round()
方法。
Java是一种面向对象的语言,但其执行过程依旧时顺序的,在顺序执行的程序中,会进行一些选择分支和循环操做。
Java中可使用if-else和switch进行分支选择。
形如
if(A){ B }else{ C }
就是若是判断条件A为真,则执行B,不然执行C。
形如
switch(A){ case 1: B; case 2: C;break; case 3: D;break; case 4: E;break; ··· }
即若是判断条件A为1,则执行B而后执行C而后中断该代码块,若是判断条件为2则执行C而后中断该代码块,若是判断条件为3则执行D而后中断该代码块,等等。
循环有3种形式:while,do-while和for。
形如
while(A){ B } 对判断条件A进行判断,当判断条件为A时,屡次执行B代码。
形如
do{ B }while(A)
先执行一次B代码,而后对判断条件A进行判断,当判断条件A为真时,循环至花括号头部执行B代码。
形如
for(int i=0,j=0;i<100;i++,j++){ B }
首先对第一个;
前面的部分执行,常见于循环控制对象进行初始化,多个对象可使用,
进行区分,而后对;
间的循环控制条件进行判断,若是条件为真则执行下方代码块,最后对;
后的第三部分执行,好比对循环对象进行自增操做等。实例中就是先对i和j进行初始化为0,而后判断i是否小于100,若是为真则执行B代码,最后执行i自增和j自增,而后判断i是否小于100,若是为真继续循环,该代码最后将执行B代码段100次。
在编程时,循环常在数组等可迭代对象上进行。可迭代就是能够从前到后顺序走一遍。对此,Java提供了一些便利的语法方便开发。形如
容器 A; for(int i:A){ B }
就是说对于容器A,迭代遍历一遍,i会在每次循环中引用到A中的每一个对象,而后执行B代码块。假如容器A中有100个对象,那B就会被执行100次。
结束该语句所在函数,返回返回值。
返回值类型由函数定义决定,若是不匹配且没法兼容则会IDE报错。
Java的流程控制中没有goto语句,可是经过break和continue语句,实现了从深层循环中跳出的功能。经过在循环前标记label:
,而后使用break label
和continue label
,便可跳出循环到指定位置或者是跳出本次循环到指定位置。
label1: while(true){ label2: while(true){ continue label1;//结束本次循环,跳转到外循环继续循环 break label1://结束外层循环 } }
Java的基本语法,与其余的语言有类似之处,也有不一样之处,但编程原本就是一种实践的技能,纸上得来终觉浅,绝知代码要手撸,仍是实打实的写代码才能够将知识转化为能力。以及,文章真难写。