以下内容是纯属是我的学习笔记和我遇到问题后,得到解决后的总结。如发现错误之处希望大家帮忙指出。谢谢! 大家一起学习,共同进步。
-----顺心( 在校学生)
一、注释:
Java的三种注释: 单行注释(
//
)、多行注释(
/* ... */
)、文档注释(
/** ... */
)。
1、注解说明解释。
2、调试程序。 (多行注释不能嵌套多行注释)
二、标识符:
Java中的包、类、方法、参数和变量的名字,可由任意顺序呢的大小写字母、数字、下划线(__)和美元符号($)组成,但标识符不能以数字开头,不能使Java中的保留关键字。 【 不可以与布尔值(false、ture)、null同名】
可考题目1: 合法的标识符:sum、 _3_、$points;
#name、25name、class、hello Word(不能有空格);
可考题目2:哪些关键字是没有用到的,基本上就是选择goto或const。
可考题目3:(多选题)以下选项中(ACF)是java关键字。
A. public B. String C. int D.true E、Class F、class G、main
(重点解析: 1、Class、String、main都不是关键字,小写的class是关键字,而Class不是,因为关键字全是小写哦;
String是字符串的类名,而main是主方法名。
2、true、false、null也都不是关键字,它们是系统定义的常量值。常量值也不能用作标识符。)
(为啥变量名不能以数字开头呢? 原因在于如果一个标识符以数字开头,并且其他字符也都是数字的话,比如123,那究竟是变量名呢,还是常量值呢?以字母开头就不存在这样的问题了所以标识符不能以数字开头)
三、 名称命名规范
《一》包名:多单词组成时所有字母都小写(xxxyyyzzz)。
但是由于Java面向对象编程的特性,每一名Java程序员都 可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。 由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。
例如:net.frontfree.javagroup
例如: com.sun.swt.一般公司命名会以com.公司名.项目名.模块名.开头,所以会长一点.如com.land.oa.documentOpt.struts.action
即:
公司项目中的命名:
AA公司的BB项目CC模块的包这样命名-com.AA.BB.CC
个人的项目又怎么命名呢?
经过我对“个人的”单词搜索,有“individual、personal、private、one-man”,进一步对以上4个单词词意的分析,并在保证了唯一性,使用每个单词的前4个字母作为前缀,正好和“com”也做了区分。如下:
indi :
个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。
包名为“indi.发起者名.项目名.模块名.……”。
pers :
个人项目,指个人发起,独自完成,可分享的项目,copyright主要属于个人。
包名为“pers.个人名.项目名.模块名.……”。
priv :
包名为“priv.个人名.项目名.模块名.……”。
onem :
与“indi”相同,推荐使用“indi”。
team :
包名为“team.团队名.项目名.模块名.……”。
com :
包名为“com.公司名.项目名.模块名.……”。
(补充:
Java包定义有一个官方给建议: |
)
《二》类名接口名:多单词组成时,所有单词的首字母必须大写(XxxYyyZzz)。 TestPage;
如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如: XMLExample;
《三》变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。
xxxYyyZzz ( 例如类变量:private int studentAge;)
《四》常量名:所有字母都大写。多单词时每个单词用下划线连接。而 且该变量必须是公共、静态、final类型
)
XXX_YYY_ZZZ
《五》方法名:首字的首字母小写,其余的首字母大写,含大小写。尽量少用下划线。
例如, myName , setTime 等。这种命名方法叫做驼峰式命名。
四、数据类型
eg:
//-128~127
short s=30000;
long l=4l;
// 切记要加f ,因为2.3会默认为double型,加f后才表示为float
double d=34.56;
//如果 char ch=4;就错了,因为char是字符型
char ch1= 'a';
char ch2= '+';
// 空格也行
boolean bo=true;
boolean bo1=false;
强调四点:
1、byte占一个字节,是整型类的一种,不要跟C语言的字符型混淆。
2、char占2个字节,而不是一个字节。
3、所有的数据类型长度固定,不随硬件软件系统的不同而发生变化,这一点又和C语言不同。
4、Sting类型不是基本数据类型,而是引用数据类型。Sting是一个类,它是Java提供的一个类。
后两个之所以出错是因为它超出了字符变量的取值范围,char的取值范围是0~65535
常见的转义字符
No. | 转义字符 | 描述 | No. | 转义字符 | 描述 |
1 | \f | 换页 | 5 | \r | 归位 |
2 | \\ | 反斜线 | 6 | \" | 双引号 |
3 | \b | 倒退一格 | 7 | \t | Tab |
4 | \' | 单引号 | 8 | \n | 换行 |
类型转换
int i =5+5.6*4+'A' X (析:此时无法正确的给赋值,因为左边是整型,而右边有浮点型、字符型。)
不同的基本数据类型之间进行运算时需要进行类型转换。
除boolean类型外(就是整型、浮点型和字符型这三种数据之间的转换),所有基本数据类型进行运算时都要考虑类型转换。
转 换 规 则 : 低级别———>高级别
类型转换图 :
只要数据操作中出现了double类型,则肯定是最大是类型,最终的操作结果以此类型为准。
提问:请说出以下两个表达式的执行过程:
- 5+6+'A'+7L+'A 答:结果为long类型,因为这表达式中最高级别是long型,先把比long级别低的char型和int型转换为long型,再进行计算。
- 5+5.6*4+'A' 答:结果为double型,因为这表达式中最高级别是double型,先把比double级别低的char和int转换为long型,再进行计算。
(1)自动类型转换
将低级别类型赋值给高级别类型时,将进行自动类型转换。 (即:低---->高 自动转换)
byte b=7;
int i=b; // b自动转换成int型 直接赋值,将b的值直接赋给i,i=b
(2)强制类型转换
将高级别类型赋值给低级别类型时,必须进行强制类型转换。
int x=3.6; --->int x=(int)3.6;结果是3
int i=786;
byte b=i; //错误
byte b=(byte)i; //强制转换
short s=i; //错误
short s=(short)i; //强制转换
总结:
**=右侧:自动转换为表达式中最高级别的类型,再进行运算
**=两侧:左侧类型级别>右侧类型级别 自动转换
左侧类型级别<右侧类型级别 强制转换
代码实现:int a=7+5.6+'A';
--->int a=(int)(7+5.6+'A');
--->int a=7+(int)5.6+'A';
考题:
(我的另外一种理解:错误原因是,根据下图
b=b+2中;右侧中,b为byte类型,2为int类型。此时做运算前,要进行数值类型提升,提升为同种数值类型,提升的原则就是小的向大的提升,即b先自动向最高级别的int类型提升。都提升完后,运算的结果为int型,但是此时注意了,右侧赋值,赋给左侧的b(byte类型),是无法赋值进去的。所以就报错了。如果非要赋值给它,正确的做法是进去强制类型转换,在右侧的前面加上一个(byte),改为(byte)(b+2)。)