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("我是一个“程序员”");
}
}

然后编译时报错了,

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

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

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

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

刚才没注意到

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

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

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

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

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

ok正常!!!

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

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

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

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

然后执行javac ./K.java

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

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

那么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);//
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);//
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);//
} 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);//
} //这属于成员变量 去掉static之后 main中就访问不到类体中的i变量了
static int i = 100;
// 类体汇总不能直接编写java语句【除了声明变量之外】
// System.out.println(i);
// dosome方法
public static void dosome(){
// 局部变量
int i = 90;
}
}
上一篇:(转载)Android自定义标签列表控件LabelsView解析


下一篇:SQLite学习第02天:数据类型