java学习笔记(2)注释、public lcass、class、标识符、字面值、变量

java学习笔记(1)中说过了java的一些基础知识,发展史,特点,编译和运行过程,配置环境变量等,接下来开始介绍java的语法等只是点

 关于java源程序中的注释

  *什么是注释?注释的作用是什么?

    -出现在java源程序当中,是对java源代码的解释说明。

    -注释不会被编译到.class字节码文件当中。

    -一个号的开发习惯,应该是多编写注释。这样程序的可读性增强。

  *java的注释怎么写呢?

    -单行注释

      //单行注释,只注释当前行

    -多行注释

      /*

        多行注释

        多行注释

        ...

      */

    -javadoc注释(比较专业的注释,可以用javadoc命令生成说明文档,这个命令也是在JDK的bin目录下)

      /**

      * javadoc注释

      * javadoc注释,同样是多行注释

      */

下面来试一试,我是用vscode编写的代码,将HelloWorld.java程序用注释说明一下

// public 表示公开的
// class  表示定义一个类
// HelloWorld  表示一个类名
public class HelloWorld{//表示定义一个公开的类名为HelloWorld类
    // 类里面的内容叫作【类体】,记住
    // 类体中不能直接编写java语句【除了生命变量之外】
    // System.out.println("Hello, world!");//这个地方打开注释,编译就通不过
    /*
    public表示公开的
    static表示静态的
    void表示空
    main表示方法名是main
    (String[] args)是main方法的形式参数列表
    需要记住的是,以下的方法是一个程序的主方法,是一个程序的入口,主方法以main命名
    这是SUN公司规定的写法,不这么写程序进不来!!
    */
    public static void main(String[] args) {//表示定义一个公开的静态的主方法,返回值是空
        // 方法里的内容叫作方法体

        // 下面的语句叫java语句
        // java语句【java语句以";"结尾,分号必须是半角分号】
        // 先记住以下代码的意思是,向控制台输出一段字符串
        // 以下双引号必须是半角的双引号【这是java语法都的一部分】
        // java中所有的字符串都使用双引号括起来,记住不能是单引号
        System.out.println("Hello, world!");
        // 再向控制台输出消息
        System.out.println("Hello,jackson!");
        // 输出中文
        System.out.println("您好,杰克!");
        // 输出中文【提示,以下程序员两边的双引号是全角的】
        System.out.println("我是一个“程序员”");
    }
}

 

然后编译时报错了,

 

出现这样的错误,一般是因为代码中含有中文字符,注释中的中文字符也算。由于使用CMD运行java程序的时候,系统默认的编码格式是gbk。而包含中文字符的代码一般是UNICODE格式,所以直接运行含有中文字符的代码就很容易出现编码错误。

第一种解决办法,用这个命令编译:javac -encoding UTF-8 HelloWorld.java

第二种办法,用nodepad++或editplus将编码转化为UTF-8编码格式

刚才没注意到

 

 我的vscode是用的UTF-8 with BOM编码格式,忙活了半天,最后右键这点选择为UTF-8格式即可

不过编译命令还是的使用:javac -encoding UTF-8 ./HelloWorld.java

然后让程序运行一下:java HelloWorld

 

 ok正常!!!

 另外注意类体中不能直接编写java语句,除声明变量之外

 接下来我们重新建一个K.java文件

里面用class创建了B、X、Y、Z这几个类

 

 

然后执行javac ./K.java

然后会把B、X、Y、Z这几个类编译出来

 

 那么public class和class的区别是什么呢?

public class和class的区别

   *一个java源文件当中可以定义多个class

  *一个java源文件当中public的class不是必须要有的

  *一个class会对应生成xxx.class字节码文件

  *一个java源文件当中定义公开的类的话,public的class只能有一个,并且该类名称必须和java源文件名称一致

  *每一个class当中都可以编写main方法,都可以设定程序的入口,想指向B.class中的main方法,执行java B即可,依此类推

  *当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法,若没有主方法,会出现运行阶段的错误,报错是,该类中没有主方法

 例子:

class B{
    public static void main(String[] args){
        System.out.println("B`s main method invoke!");
    }
}
class X{
    public static void main(String[] args){
        System.out.println("X`s main method invoke!");
    }
}
class Y{
    public static void main(String[] args){
        System.out.println("Y`s main method invoke!");
    }
}
class Z{
    public static void main(String[] args){
        System.out.println("Z`s main method invoke!");
    }
}
public class K{
    public static void main(String[] args){
        System.out.println("K`s main method invoke!");
    }
}

 

 标识符

/*
关于java语言中的标识符
    1、什么是标识符?
        -在java源程序当中,凡是程序员有权利自己命名的单词都是标识符
        -标识符在EditPlus编辑器当中以黑色字体高亮显示
        -标识符可以标识什么元素呢?
            *类名
            *方法名
            *变量名
            *接口名
            *常量名
            ......
    2、标识符的命名规则?【不按照这个规则来,编译器会报错,这是语法】
        *一个合法的标识符只能由数字、字母、下划线_、美元符号$组成,不能含有其它的符号
        *不能以数字开头
        *严格区分大小写
        *关键字不能做标识符
        *理论上无长度限制,但是最好不要太长
    3、标识符的命名规范?【只是一种规范,不属于语法,不遵守规范,编译器不会报错】
        *最好见名知意
            例如:
                public class UserService{
                    public void login(String username,String password){
                    }
                }
        *遵守驼峰命名方式
            例如:
                SystemService
                UserService
                CustomeService
        *类名、接口名:首字母大写,后面每个单词首字母大写
        *变量、方法名:首字母小写,后面每个单词首字母大写
        *常量名全部大写
java语言汇总常见的关键字
    public class static void if for while do default byte short int long 
    float double boolean char private protected switch true false throw
    throws try catch...
*/
public class IdentifierTest01{//IdetifierTest01是一个类名,名字可以修改
    //main是一个方法名
    public static void main(String[] args){//args是一个变量名
        System.out.println("")
    }
    // doSome就是方法名
    public static void doSome(){
        // i就是变量名
        int i = 10;
    }
}

 

 字面值

 

/*
关于字面值
    *字面值:
        -10、100
        -"abc"
        -'a'
        -true
        -false
    *字面值就是数据。
    *字面值是java源程序的组成部分之一,包括关键字和标识符他们都是java源程序的组成部分。
    *数据在现实世界当中是分门别类的,所以数据在计算机编程语言当中也是有类型的。【数据类型】
        -10、100属于整数型字面值
        -3.14属于浮点型字面值
        -true、false属于布尔型字面值
        -"abc"、"中国人"属于字符串型字面值
        -'a'、'人'属于字符型字面值
    *注意:java语言当中所有的字符串型字面值必须使用""双引号括起来,双引号是半角(英文状态下的双引号)
    *java语言当中所有的字符型字面值必须使用''单引号括起来,单引号是半角
*/
public class ConstTest01{
    public static void main(String[] args){
        System.out.println("abc");
        System.out.println("最近您过的怎么样?");
        System.out.println(10);
        System.out.println(100);
        System.out.println(false);
        System.out.println(true);
        System.out.println('A');//注意单引号是字符型字面值
        System.out.println(3.14);
        // 下面会编译报错,因为单引号中只能存放单个字符,属于字符型字面值
        // System.out.println('ABC');
    }
}

 变量

 

/*
关于java语言当中的变量:
    1、什么是变量?
        *变量本质上来说是内存中的一块空间,这块空间有数据类型、有名字、有字面值。
        *变量分为三部分:数据类型、名字、字面值【数据】。
        *变量是内存中存储数据的最基本的单元。
    2、数据类型的作用?
        *不同的数据有不同的类型,不同的数据类型底层会分配不同大小的内存空间。
        *数据类型是指导程序在运行阶段应该分配多大的内存空间。
    3、变量要求:变量中存储的具体的"数据"必须和变量的"数据类型"一致。当不一致的时候编译报错。
    4、声明/定义变量的语法格式:
        数据类型 变量名;
            *数据类型:比如说 int是整数型
            *变量名:只要是合法的标识符就行。规范中要求,首字母小写,后面的单词首字母大写。
                例如:
                    int i;
                    int age;
                    int size;
                    int length;
                    int num;
                    其中int是数据类型,i、age、size、length、num都是变量名。
    5、变量声明之后,怎么赋值?
        变量名 = 字面值;
        要求:字面值的数据类型必须和变量的数据类型一致。
        = 等号,是一个运算符,叫作赋值运算符,赋值运算符先运算等号右边的表达式,表达式
                执行结束之后的结果赋值给等号左边的变量。
    6、声明和赋值可以放到一起完成。
        int i = 10;
    7、变量赋值之后,可以重新赋值,变量的值可变化。
        int i = 10;
        System.out.println(i);//10
        i = 20;
        System.out.println(i);//20
        i = 100;
        System.out.println(i);//100
    8、有了变量的概念之后,内存空间得到重复的使用。
    9、通常访问一个变量包括两种访问方式:
        *第一种:读取变量中保存的具体数据。(get方式/获取)
        *第二种:修改变量中保存的具体数据。(set方式/设置)
            i = 20;//set
            System.out.println(i);//get
    10、变量在一行上可以声明多个。
        int a,b,c;
    11、java中的变量必须先声明并且赋值后才能访问。
        int i;程序执行到这里,内存空间并没有开辟出来,变量i并没有初始化。
            所以没有赋值之前变量是无法访问的。
*/
public class VarTest01{
    public static void main(String[] args){
        //声明一个int类型的变量,起名i
        int i;
        // 编译报错:变量i并没有初始化。
        // 在java当中变量必须先声明再赋值之后才能访问。声明但没赋值的情况下无法访问,编译会报错。
        // System.out.println(i);
        i = 100;//给i变量赋值,i变量在这里完成初始化,内存开辟。
        System.out.println(i);
        // i再次重新赋值
        i = 200;
        System.out.println(i);
    }
}

 

/*
    关于java语言中的变量:
        1、方法体中的java代码,是遵守自上而下的顺序依次执行的,逐行执行。
            第一行;
            第二行;
            第三行;
            特点:上一行的程序不结束,下一行永远不会执行。
        2、在同一个"作用域"当中,变量名不能重名。但是变量可以重新赋值。
*/

public class VarTest02{
    public static void main(String[] args){
        int i = 100;
        System.out.println(i);//100
        i = 200;
        System.out.println(i);//200

        //以下代码顺序执行有错误,应该先声明赋值再访问。
        // System.out.println(k);
        // int k = 300;

        //以下代码重复声明相同类型,相同名字的变量,在java中是不允许的,要和javascript区别开
        // int i = 90;
        // System.out.println(i);
    }
}

 

/*
    关于java中的变量:
        变量的作用域:
        1、什么是作用域?
            变量的作用域,其实描述的就是变量的作用域范围。
            在上面范围之内是可以被访问的,只要出了这个范围该变量就无法访问了。
        2、变量的作用域只要记住一句话:
            出了大括号就不认识了。

*/

public class VarTest03{
    // 注意:这里的static不要去掉
    static int k = 90;
    public static void main(String[] args){
        // 变量i的作用域是main方法
        // 在整个main方法当中是有效的,可见的,可访问的
        int i = 100;

        System.out.println(i);//100
        System.out.println(k);//可以访问k   90

        // 以下会编写一个for循环语句
        // 这个for循环后面的控制语句,后面再说。
        for(int a=0;a<10;a++){//a变量的作用域是整个for循环,循环结束后,a变量的内存就释放了

        }
        // 这里访问不了a变量
        // System.out.println(a);

        int j;//j变量的作用域是main方法,不是for循环
        for(j=0;j<10;j++){

        }
        System.out.println(j);//10
    }

    public static void dosome(){
        // 这里无法访问main方法当中的变量i
        // 已经出了i变量的作用域
        // System.out.println(i);

        // 可以访问k
        System.out.println(k);
    }
}

 

/*
    关于变量的分类:
        根据变量声明的位置来分类:
            *局部变量
                -在方法体当中声明的变量叫作局部变量。
            *成员变量
                -在方法体外【类体内】声明的变量叫作成员变量。
        在不同的作用域当中,作用域是可以一样的。
        在同一个作用域当中,变量名不能重名。
*/

public class VarTest04{
    // 成员变量 
    int k = 200;

    // 主方法入口
    public static void main(String[] args){
        // i是局部变量
        // int i = 10;
        // java遵循就近原则
        System.out.println(i);//100
    }

    //这属于成员变量  去掉static之后 main中就访问不到类体中的i变量了
    static int i = 100;
    // 类体汇总不能直接编写java语句【除了声明变量之外】
    // System.out.println(i);
    // dosome方法
    public static void dosome(){
        // 局部变量
        int i = 90;
    }
}

 

 

 

 

 

posted @ 2019-12-01 10:06  古墩古墩  Views(549)  Comments(0Edit  收藏  举报