初学JAVA-4-JAVA基本语法

        虽然写完了上一篇笔记,马上就开始接着写了这篇,然而标题写好了以后,却迟迟没有动笔写正文。所有的语言学习,都离不开语法的学习,包括汉语和英语。然而语法的学习是最枯燥的,主谓宾定状补,疑问句反问句倒装句......所以我考虑了一段时间,决定不专门写JAVA的基本语法,只按照我设想的学习进度来对期间使用到的语法部分进行说明,如果在下一阶段出现了新的语法问题,就进行附加说明,然后在最后进行一次语法总结。

        那么到目前为止,我们写完了第一个JAVA程序后,有哪些语法问题呢?回顾一下我们的第一个java程序

public class HelloWorld{
  public static void main(String[] args){
    System.out.println("Hello World!");
  }
}

    如果你是自己手写工一个字母一个字母的输入的完成的这个工作,那么有可能你在javac HelloWorld.java这个操作的时候可能就吃了些苦头。你可能会发现系统不停提示这里有错误那里有错误,而错误提示又把你看的一头雾水,你只能一个字母一个字母检查,一个符号一个符号检查,甚至最后你干脆直接复制了这段代码到你的文本中——这样至少比你直接放弃JAVA好得多(这个想法忽然让我想起网上各种Oracle-从入门到删库,JAVA-从入门到入土的段子)。如果你没有丝毫错误就手工完全正确的完成了这个代码,也不必开心,这么简单的代码,不出错也是很正常的。但是以后代码复杂起来,想不错也难啊。

      现在让我们看看已经有的这些东西包含哪些语法,或者说需要注意的:

      大小写敏感:这个在上一篇里面已经体现了,我们把HelloWorld换成了Helloworld,然后就编译错误了,说明在java的世界里,大写和小写是不一样的

      公共类名应该和源文件名一致:我们程序的源文件名叫HelloWorld.java,与程序里的类名是完全一致的,当我们把程序里的类名修改后,编译时系统提示我们类Helloworld是公共的,应该在名为Helloworld.java的文件被声明,这说明,公共类名应该和文件名一致,无论你是把类名字改成和文件名字一致,还是把文件名字改成和类名字一致,总之公共类名就应该和JAVA文件名字相同

      命名规范:从我们的程序里面大家可能已经看出来了,对于类名,我们通常是采取每个单词的首字母大写,如HelloWorld;对于方法名,则首字母小写,后面的单词首字母大写(我们的例子中,现在还没有其他的方法,只有一个main方法。如果有一个方法需要命名,那么按照这样的方式进行命名,比如有个方法用于获取年龄,那这个方法可能叫getAge,第一个单词首字母小写,第二个单词首字母大写);对于变量名,也是首字母小写,后面单词的首字母大写(我们现在的例子还没有定义变量,比如我们定义一个员工类,有基本工资和绩效工资,那么基本工资命名应该是baseSalary,第一个单词首字母小写,第二个单词首字母大写)请注意,命名规范是约定俗成的,并不是JAVA语法强制的,这样做是为了代码的可读性,比如我们可以将类名改成a,将源文件改成a.java,一样可以成功执行。命名规范并不是java语法要求,只是java语法建议。

    

     主方法:在我们的程序中,我们的类里面只有一个方法public static void main(String[] args){...}这是java程序的主方法,是所有程序执行的入口,当我们使用java HelloWorld命令来执行程序时,虚拟机从这个方法开始执行。所有的java程序,想要能正常执行就必须有一个这样的方法,而且只能由一个这样的方法,写法是完全固定的。比如我们去掉main方法后面的String[] args,再编译的话是不会有问题的,然而如果执行这个类,就会提示没有main方法:

    初学JAVA-4-JAVA基本语法_第1张图片初学JAVA-4-JAVA基本语法_第2张图片

     那么如果我们把两个方法都写进去呢?

    初学JAVA-4-JAVA基本语法_第3张图片初学JAVA-4-JAVA基本语法_第4张图片

      可以看到编译和执行都是正常的,那说明类里面是可以存在同样的方法名的但是主方法只能有一个,就是严格按照public static void main(String[] args)命名的方法,才是主方法

      标识符:java的标识符,就是类名、变量名、方法名的具体名字,比如例子中的类名HelloWorld、主方法名main以及上面举例提到的getAge和baseSalary。上面我们已经提到,标识符是大小写敏感的.另外,标识符只能使用大小写字母(A-Z、a-z)、美元符号($)、下划线(_)开头,其他如数字、百分号、加号减号等不能作为标识符的开头,比如age、$price、_value1 、__v__alue等均是合法标识符,但是 111aaa、%buySomething是非法标识符,不能使用 .另外,不能使用java关键字作为标识符,如我们例子中已经出现过的public、class、void均是java关键字,以下是java关键字和关键字说明,java关键字不多,也无需硬记,以后我们会慢慢使用到他们。另外,标识符是多个单词组成的时候必须连着写,不能拆开写,比如我们写我的第一个Java类,标识符可以是MyFirstJavaClass,绝对不能写成 My First Java Class

关键字 描述
abstract 抽象方法,抽象类的修饰符
assert 断言条件是否满足
boolean 布尔数据类型
break 跳出循环或者label代码段
byte 8-bit 有符号数据类型
case switch语句的一个条件
catch 和try搭配扑捉异常信息
char 16-bit Unicode字符数据类型
class 定义类
const 未使用
continue 不执行循环体剩余部分
default switch语句中的默认分支
do 循环语句,循环体至少会执行一次
double 64-bit双精度浮点数
else if条件不成立时执行的分支
enum 枚举类型
extends 表示一个类是另一个类的子类
final 表示一个值在初始化之后就不能再改变了
表示方法不能被重写,或者一个类不能有子类
finally 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
float 32-bit单精度浮点数
for for循环语句
goto 未使用
if 条件语句
implements 表示一个类实现了接口
import 导入类
instanceof 测试一个对象是否是某个类的实例
int 32位整型数
interface 接口,一种抽象的类型,仅有方法和常量的定义
long 64位整型数
native 表示方法用非java代码实现
new 分配新的类实例
package 一系列相关类组成一个包
private 表示私有字段,或者方法等,只能从类内部访问
protected 表示字段只能通过类或者其子类访问
子类或者在同一个包内的其他类
public 表示共有属性或者方法
return 方法返回值
short 16位数字
static 表示在类级别定义,所有实例共享的
strictfp 浮点数比较使用严格的规则
super 表示基类
switch 选择语句
synchronized 表示同一时间只能由一个线程访问的代码块
this 表示调用当前实例
或者调用另一个构造函数
throw 抛出异常
throws 定义方法可能抛出的异常
transient 修饰不要序列化的字段
try 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void 标记方法不返回任何值
volatile 标记字段可能会被多个线程同时访问,而不做同步
while while循环
          修饰符:用于修饰类、方法和变量的。修饰符主要有两种,一种是用于访问控制的,也叫访问控制符;一种用于非访问控制的,也叫非访问控制符。比如我们例子中的public,就是一个访问控制符。非访问控制符我们以后讨论,这里先介绍访问控制符。访问控制符有四种,分别是public、protected、default、private,分别表示其他类对本类的访问权限。用public修饰的,表示对所有类公开,大家都可以来访问;用protected修饰的,表示在同一个包内的以及这个类的子类才有权利来访问;用default修饰的(注意,default是默认、缺省的意思,并不是真的用default这个单词做修饰符)表示只有同一个包内的才有权利访问;而用private修饰的,对不起,只有自己才能访问。各种修饰类的写法:
   
修饰符 写法
public public class HelloWorld
protected protected class HelloWorld
default class HelloWorld
private private class HelloWorld
        类:通过class关键字声明的标识符,被称之为类。比如我们例子中的HelloWorld,就是一个类,是一个名叫HelloWorld的类,这个类用来输出一段话:Hello World!通常,类都是由方法和变量组成,但是类也可以没有方法或者没有变量,比如我们的例子中就只有一个main方法,没有变量,当然类也可以只有变量没有方法,或者什么都没有,例如我们把HelloWorld的main方法删除掉,再重新编译,并不会报错。
         初学JAVA-4-JAVA基本语法_第5张图片

        但是如果我们运行时候会报错,因为这个类没有main方法。我们说过,main方法是java程序的入口,没有这个入口虚拟机不知道要从哪里开始执行,就会报错

        

        类的范围从类的名称开始,以一对大括号将类的内容包含在内,正规的类命名方式应该  修饰符  class 类名{}

        方法方法用于声明类的行为。比如我们例子中的main方法,从上面我们已经知道,一个类是可以存在名字相同的方法的,但是如果两个方法完全一样可行吗?从直觉我们就知道是不可行的,因为我们无法区分这两个方法。好在系统也确实无法区分两个完全一样的方法,所以会在编译的时候阻止我们的行为,所以方法有什么东西是可以对它本身进行区分呢?

          方法的命名方式是  修饰符  返回类型  方法名 (参数1,参数2,....){}

          我们从main方法中,public static void main(String[] args){},其中public 是修饰符,static是修饰符(非访问控制符,这个以后再介绍),void是返回类型,main是方法名,String[] args是参数。

        返回类型是一个方法必不可少的部分,因为我们说了方法是声明类的行为,那么这个行为会获得一个什么结果呢?就从这个返回类型来表现,比如我们要声明两个数字相加的方法,那么我们肯定希望能返回他们相加之后的和,就必须用到返回类型。而当我们只是希望做一个动作,对这个动作会带来的结果不关心的话,就使用void关键字,表示不需要返回任何结果。比如我们的main方法,你在控制台打印Hello World!就好了,不要给我返回什么。

        同样的,我们看到方法也是以一对大括号把方法的具体操作包含在内,这个是方法的作用范围,方法的执行从第一个{ 开始,到最后一个}结束

        

         变量:java中变量分为局部变量、类变量和成员变量。声明一个变量必须声明变量的类型,这个类型和方法中的返回类型是同一个东西。由于我们现在的例子中没有变量,变量这部分内容会在后面进行说明。

         语句:我们的例子中,main方法执行了一个操作 System.out.println("Hello World!");  这一个操作就是一个java语句,这个语句的作用我们也已经知道了,就是输出Hello World! 这句话。请注意,java的语句一定是以分号结束的,如果我们不写这个分号,那虚拟机就不知道怎么结束,就会报错。另外,所有的表示范围的{}、()表示语句结束的分号;都是

          我们已经知道用System.out.println("XXXXXX");来输出一段话,那我们尝试执行一下以下代码看看:

           

public class MyFirstJavaClass{
  public static void main(String[] args){
     System.out.println("First");
     System.out.println(1);
     System.out.println("1");

          

      System.out.println(1>2);
      System.out.println(123-23);
      System.out.println('a');
      System.out.println("a");

  }

}

         果然语法这个东西是最枯燥的,不管看的人如何,我写起来都觉得好无聊,没有什么信心能吸引人仔细看。下面我们会介绍java的基本数据类型和运算,以及简单的人机交互,虽然也有一些枯燥的东西,但是有了写代码的机会,就不是什么问题了。


你可能感兴趣的:(学习笔记,JAVA初学)