黑马程序员——Java基础语法
2015-07-31 11:06
417 查看
——- android培训、java培训、期待与您交流! ———-
一、java概述
java是Sun公司(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。是简单易学、完全面向对象、安全可靠、跨平台(即与平台无关)的编程语言。
java的跨平台性:通过java语言编写的应用程序在不同的系统平台上都可以运行。
跨平台的原理:在运行java应用程序的操作系统上安装一个java虚拟机(JVM 即Java Virtual Machine),由JVM来负责java程序在该系统中的运行。
java语言的三种技术架构:
(1)JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
(2)JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
(3)JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
java语言环境:
1,JRE(Java Runtime Environment)包括java程序所需的类库和JVM(java虚拟机)。如果想要运行一个java程序,只需安装JRE。
2,JDK(Java Development Kit)提供给java开发人员使用的,包含java的开发工具和JRE。
简单一句话,使用JDK开发完成的java程序,交给JRE去运行。
量3,配置环境变:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1)永久配置方式:我的电脑—属性—高级—环境变量 编辑path环境变量,在变量值开始处加上java工具所在目录,后面用“;”和其他值分隔开。
JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2)临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1)永久配置方式:classpath=.;c:\;e:\
2)临时配置方式:set classpath=.;c:\;e:\
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1)如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2)如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令
执行java程序是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
二、java语法基础
1,关键字:被赋予了特殊含义的单词,所有的字母都是小写。
保留字:还没有赋予特殊含义,但是准备日后要使用过的单词。
2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、A-Z、$、_
注意:
1),数字不可以开头。
2),不可以使用关键字。
java中严格区分大小写,在起名字时,为了提高阅读性,尽量使用有意义的单词。
java中的名称规范:
包名:多单词组成时所有字母都是小写。例:com.sun
类名接口名:多单词组成时,所有单词的首字母大写。例:DataInput
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。例:getValue(),nextLine
常量名:所有字
3,注释
用于注解说明解释程序的文字
好处:提高了代码的阅读性
java中注释的格式:
(1)单行注释:
//注释文字
(2)多行注释
/注释文字/
(3)文档注释
/*注释文字/
4,常量:是在程序中的不能改变的数值。
5,变量:其实就是内存中的一个存储空间,用于存储常量数据。该空间有自己的名称(变量名)和类型(数据类型)
作用:用来不断的存放同一类型的常量,并可以重复使用
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
数据类型:
1)基本数据类型:
整数类型:byte、short、int、long 默认是int
浮点类型:float、double 默认是double
字符类型:char
布尔类型:boolean
2)引用数据类型: 数组、类、接口。
按精度排列级别从低到高为:
byte–> short–>int–>long–>float–>double
数据类型转换:
1)自动类型转换:从低级别到高级别,系统自动转的;long可以自动转float,反之则不行。
强制类型转换:把一个高级别的数赋给一个别该数的级别低的变量;
运算符号:
1)、算术运算符。
+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:连接符。
++,–
2)、赋值运算符。
= += -= *= /= %=
3)、比较运算符。
== != < > <= >=
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
&(与) |(或) ^ (异或) ~(取反)
“<<”(左移,相当于乘以2的移动的位数次幂)
“>>”(右移,相当于除以2的移动的位数次幂)
“>>>”(无符号右移)
6,语句。
(1)判断结构:if
三种格式:
1)if(条件表达式)
{
执行语句;
}
2)if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
3)if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
(2)选择结构:switch
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
……
default:
执行语句;
break;
}
工作原理:用表达式的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
特点:
1)表达式结果类型:byte,short,int,char,String,枚举类型
2)default可以写在switch结构中的任意位置;程序先从第一个case开始执行,如果没有匹配的再执行default(无论default在什么位置都执行),有匹配的就从匹配的case开始执行,直到遇到break或者程序结束。
怎么选择if和switch?
当判断的具体数值不多时,可以使用if,也可以使用switch,但是建议使用switch,效率较高。
当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
(3)循环结构
1)while语句
格式:
while(条件表达式)
{
循环体;
}
2)do while语句
do
{
循环体;
}while(条件表达式);
特点:无论条件是否满足,循环体至少被执行一次。
3)for语句
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{循环体;}
执行流程:首先执行初始化表达式(只执行一次),然后判断循环条件,为真就执行循环体,然后在执行循环后的操作表达式,然后在判断循环条件,直到循环条件不满足就结束。
while和for可以进行互换。
区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。while循环使用的变量在循环结束之后还存在。
最简单的无限循环:
while(true){}
for(;;)
break和continue
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。
break和continue语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。
7,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数,也可以成为方法。
java中的函数的定义格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
执行语句;
return 返回值;
}
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数?
函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
1)明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
2)明确在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
函数的作用:
1)用于定义功能。
2)用于封装代码,提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
定义函数时,函数的结果应该返回给调用者,交由调用者去处理。
主函数:
1)保证该类的独立运行。
2)因为它是程序的入口。
3)因为它在被jvm调用。
函数定义名称是为什么呢?
答:1)为了对该功能进行标示,方便于调用。
2)为了通过名称就可以明确函数的功能,为了增加代码的阅读性。
重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
重载的特点:当函数同名时,只看参数列表。和返回值类型没关系。
重载的好处:方便与阅读,优化了程序设计。
8,数 组:用于存储同一类型数据的一个容器。
好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
格式:
1)元素类型[] 变量名 = new 元素类型[元素的个数];
例:int[] arr=new int[3];
2)元素类型[] 变量名 = {元素1,元素2…};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2…};
例:int[] arr={1,3,5,7};
int[] arr=new int[]{1,3,5,7};
数组的内存结构:
java程序在运行时,需要在内存中分配空间。为了提高运算效率,对空间进行了不同区域的划分,因为没一片区域都有特定的处理数据的方式和内存管理方式。
java分了5片内存。
1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );
只要数据运算完成所在的区域结束,该数据就会被释放。
堆:用于存储数组和对象,也就是实体(就是用于封装多个数据的),通过new建立的实例都存放在堆内存中。
1:每一个实体都有内存首地址值。
2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。
3:实体不被使用时,会在不确定的时间内被垃圾回收机器回收。
二维数组:
格式1:
int[][] arr=new int[3][2];
定义了名称为arr的二维数组,二维数组中有3个一维数组,每个一维数组中有2个元素,一维数组的名称分别是arr[0],arr[1],arr[2].
内存结构:
格式2:
int[][] arr=new int[3][];
二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这3个一维数组进行初始化:
arr[0]=new int [3];
arr[1]=new int[2];
arr[2]=new int[2];
内存结构:
——- android培训、java培训、期待与您交流! ———-
一、java概述
java是Sun公司(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。是简单易学、完全面向对象、安全可靠、跨平台(即与平台无关)的编程语言。
java的跨平台性:通过java语言编写的应用程序在不同的系统平台上都可以运行。
跨平台的原理:在运行java应用程序的操作系统上安装一个java虚拟机(JVM 即Java Virtual Machine),由JVM来负责java程序在该系统中的运行。
java语言的三种技术架构:
(1)JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
(2)JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
(3)JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
java语言环境:
1,JRE(Java Runtime Environment)包括java程序所需的类库和JVM(java虚拟机)。如果想要运行一个java程序,只需安装JRE。
2,JDK(Java Development Kit)提供给java开发人员使用的,包含java的开发工具和JRE。
简单一句话,使用JDK开发完成的java程序,交给JRE去运行。
量3,配置环境变:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1)永久配置方式:我的电脑—属性—高级—环境变量 编辑path环境变量,在变量值开始处加上java工具所在目录,后面用“;”和其他值分隔开。
JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2)临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1)永久配置方式:classpath=.;c:\;e:\
2)临时配置方式:set classpath=.;c:\;e:\
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1)如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2)如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令
执行java程序是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
二、java语法基础
1,关键字:被赋予了特殊含义的单词,所有的字母都是小写。
保留字:还没有赋予特殊含义,但是准备日后要使用过的单词。
2,标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、A-Z、$、_
注意:
1),数字不可以开头。
2),不可以使用关键字。
java中严格区分大小写,在起名字时,为了提高阅读性,尽量使用有意义的单词。
java中的名称规范:
包名:多单词组成时所有字母都是小写。例:com.sun
类名接口名:多单词组成时,所有单词的首字母大写。例:DataInput
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。例:getValue(),nextLine
常量名:所有字
3,注释
用于注解说明解释程序的文字
好处:提高了代码的阅读性
java中注释的格式:
(1)单行注释:
//注释文字
(2)多行注释
/注释文字/
(3)文档注释
/*注释文字/
4,常量:是在程序中的不能改变的数值。
5,变量:其实就是内存中的一个存储空间,用于存储常量数据。该空间有自己的名称(变量名)和类型(数据类型)
作用:用来不断的存放同一类型的常量,并可以重复使用
变量的作用域和生存期:
变量的作用域:
作用域从变量定义的位置开始,到该变量所在的那对大括号结束;
生命周期:
变量从定义的位置开始就在内存中活了;
变量到达它所在的作用域的时候就在内存中消失了;
java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
数据类型:
1)基本数据类型:
整数类型:byte、short、int、long 默认是int
浮点类型:float、double 默认是double
字符类型:char
布尔类型:boolean
2)引用数据类型: 数组、类、接口。
按精度排列级别从低到高为:
byte–> short–>int–>long–>float–>double
数据类型转换:
1)自动类型转换:从低级别到高级别,系统自动转的;long可以自动转float,反之则不行。
强制类型转换:把一个高级别的数赋给一个别该数的级别低的变量;
运算符号:
1)、算术运算符。
+ - * / % %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
+:连接符。
++,–
2)、赋值运算符。
= += -= *= /= %=
3)、比较运算符。
== != < > <= >=
特点:该运算符的特点是:运算完的结果,要么是true,要么是false。
4)、逻辑运算符。
& | ^ ! && ||
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
5)、位运算符:用于操作二进制位的运算符。
&(与) |(或) ^ (异或) ~(取反)
“<<”(左移,相当于乘以2的移动的位数次幂)
“>>”(右移,相当于除以2的移动的位数次幂)
“>>>”(无符号右移)
6,语句。
(1)判断结构:if
三种格式:
1)if(条件表达式)
{
执行语句;
}
2)if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
3)if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
(2)选择结构:switch
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
……
default:
执行语句;
break;
}
工作原理:用表达式的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
特点:
1)表达式结果类型:byte,short,int,char,String,枚举类型
2)default可以写在switch结构中的任意位置;程序先从第一个case开始执行,如果没有匹配的再执行default(无论default在什么位置都执行),有匹配的就从匹配的case开始执行,直到遇到break或者程序结束。
怎么选择if和switch?
当判断的具体数值不多时,可以使用if,也可以使用switch,但是建议使用switch,效率较高。
当判断数据范围,获取判断运算结果boolean类型时,需要使用if。
(3)循环结构
1)while语句
格式:
while(条件表达式)
{
循环体;
}
2)do while语句
do
{
循环体;
}while(条件表达式);
特点:无论条件是否满足,循环体至少被执行一次。
3)for语句
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{循环体;}
执行流程:首先执行初始化表达式(只执行一次),然后判断循环条件,为真就执行循环体,然后在执行循环后的操作表达式,然后在判断循环条件,直到循环条件不满足就结束。
while和for可以进行互换。
区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。while循环使用的变量在循环结束之后还存在。
最简单的无限循环:
while(true){}
for(;;)
break和continue
break:作用于switch ,和循环语句,用于跳出,或者称为结束。
当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue:只作用于循环结构,继续循环用的。
作用:结束本次循环,继续下次循环。
break和continue语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。
7,函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数,也可以成为方法。
java中的函数的定义格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
执行语句;
return 返回值;
}
当函数没有具体的返回值时,返回的返回值类型用void关键字表示。
如果函数的返回值类型是void时,return语句可以省略不写的,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数?
函数其实就是一个功能,定义函数就是实现功能,通过两个明确来完成:
1)明确该功能的运算完的结果,其实是在明确这个函数的返回值类型。
2)明确在实现该功能的过程中是否有未知内容参与了运算,其实就是在明确这个函数的参数列表(参数类型&参数个数)。
函数的作用:
1)用于定义功能。
2)用于封装代码,提高代码的复用性。
注意:函数中只能调用函数,不能定义函数。
定义函数时,函数的结果应该返回给调用者,交由调用者去处理。
主函数:
1)保证该类的独立运行。
2)因为它是程序的入口。
3)因为它在被jvm调用。
函数定义名称是为什么呢?
答:1)为了对该功能进行标示,方便于调用。
2)为了通过名称就可以明确函数的功能,为了增加代码的阅读性。
重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
重载的特点:当函数同名时,只看参数列表。和返回值类型没关系。
重载的好处:方便与阅读,优化了程序设计。
8,数 组:用于存储同一类型数据的一个容器。
好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
格式:
1)元素类型[] 变量名 = new 元素类型[元素的个数];
例:int[] arr=new int[3];
2)元素类型[] 变量名 = {元素1,元素2…};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2…};
例:int[] arr={1,3,5,7};
int[] arr=new int[]{1,3,5,7};
数组的内存结构:
java程序在运行时,需要在内存中分配空间。为了提高运算效率,对空间进行了不同区域的划分,因为没一片区域都有特定的处理数据的方式和内存管理方式。
java分了5片内存。
1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );
只要数据运算完成所在的区域结束,该数据就会被释放。
堆:用于存储数组和对象,也就是实体(就是用于封装多个数据的),通过new建立的实例都存放在堆内存中。
1:每一个实体都有内存首地址值。
2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。
3:实体不被使用时,会在不确定的时间内被垃圾回收机器回收。
二维数组:
格式1:
int[][] arr=new int[3][2];
定义了名称为arr的二维数组,二维数组中有3个一维数组,每个一维数组中有2个元素,一维数组的名称分别是arr[0],arr[1],arr[2].
内存结构:
格式2:
int[][] arr=new int[3][];
二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这3个一维数组进行初始化:
arr[0]=new int [3];
arr[1]=new int[2];
arr[2]=new int[2];
内存结构:
——- android培训、java培训、期待与您交流! ———-
相关文章推荐
- 黑马程序员——JAVA基础------反射
- 毕业季,扣丁学堂送福利啦
- 面试题36_数组中的逆序对
- 黑马程序员——java中数组的定义与应用
- (面试题25题)LeetCode Path Sum II
- 面试宝典第三版第八章8.2正确程序
- 28岁程序员转行,何去何从?
- 嵌入式软件开发——嵌入式软件工程师面试题
- 写给新手程序员的一封信(转)
- 面试题35_第一个只出现一次的字符
- 面试题34_丑数
- 程序员的恋情
- 程序员如何写好技术简历 —— 实例、模板及工具
- 笔试面试
- 剑指Offer面试题11(Java版):数值的整数次方
- 浅谈IT路的职业规划
- 一个老程序员的十年回顾
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
- 【LeetCode-面试算法经典-Java实现】【058-Length of Last Word (最后一个单词的长度)】
- 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】