本讲内容:对象、标识符、关键字、变量、常量、字面值、基本数据类型、整数、浮点数、布尔型、字符型、赋值、注释
Java作为一门语言,必然有他的语法规则。学习编程语言的关键之一就是学好语法规则,写作合乎语法规则的语句,控制计算机完成各种任务。而按编程语言的语法规则写成的,完成某项功能的代码集合就可以叫做程序。
一、初识对象(Object):
“初识对象的时候我们还不知道什么是对象。”
Java的一个重要特点就是面向对象(Object Oriented), 面向对象是相对于面向过程(Process Oriented)来说的。
我们用一个从冰箱中取一杯牛奶的例子来说明面向过程和面向对象的区别。
先用面向过程的思路描述这个过程:
再用面向对象的思路描述这个过程:
我们把冰箱作为一个对象的时候,问题变得异常简单,冰箱有一个方法就是取牛奶的方法,你调用这个方法,这个方法的返回值就是一杯牛奶。那么现实生活中有这样智能的冰箱吗?有的,找个人站冰箱旁边就行了,把那个人和冰箱合起来包装成一个对象它就是智能冰箱对象了^_^ 。
面向对象的编程语言把所有事物都看成对象:万事万物皆对象。
Java的程序就是一些对象的集合,这些对象通过调用彼此的方法与其他对象交互。每个对象都属于某种有一个类或者接口定义的类型。
二、标识符(Indentifier)
Java语言中的类名、对象名、方法名、常量名等等这些Java组件都需要起个名字,在而这些组件的名称就被称为标识符(Indentifier)。
合法的标识符具有一些命名规则:
- 必须以字母、美元符号或下划线开头。数字不能开头
- 第一个字符之后可以是任意长度的包含数字、字母、美元符号、下划线的任意组合。
- 不能使用Java关键字和保留字做标识符
- 标识符是大小写敏感的,Z和z是两个不同的标识符。
- Unicode字符会被视为普通字母对待。
针对最后一条,连SCJP(Sun Ceritified Java Programmer)考试也不会要求,但是你要了解,这样是可以的:
2 | public static void main(String[] args){ |
4 | System.out.println(世界); |
上面的代码回成功的打印出“阿凡达”字样。
三、关键字(keywords)
和所有的编程语言一样,Java具有一组内置的关键字,这些关键字绝对不能用来做为标识符。Java SE6里一共有50个关键字(keywords):
abstract | continue | for | new | switch |
assert | default | goto | package | synchronized |
boolean | do | if | private | this |
break | double | implements | protected | throw |
byte | else | import | public | throws |
case | enum | instanceof | return | transient 瞬间 |
catch | extentds | int | short | try |
char | final | interface | static | void |
class | finally | long | strictfp | volatile |
const | float | native | super | while |
这些单词有共同的特点是:全是小写的,不能用作标识符。(如果非要用做标识符呢,会有什么事情发生?自己去试试看)。其中 instanceof 是 instance of 的连写 ,strictfp 是 strict float point 的连写
有三个看起来像是关键字,其实不是关键的东东,他们是字面值(literal),字面值的概念下面立刻就会讲到。
true 布尔字面值 | false 布尔字面值 | null 空值字面值 |
四、变量(Variable)初识
所谓变量,就是值可以被改变的量。定义一个变量的时候不需要什么特殊的关键字修饰。
这个变量的概念很接近数学里变量的概念,举个例子:
2 | public static void main(String[] args){ |
3 | String myName = "nabula" ; |
5 | System.out.println(myName); |
上述程序的打印结果大家想必能猜出来,是“nebulayao”。
五、常量(named constant、constant)初识
所谓常量,就是它的值不允许改变的量。要声明一个常量,就要用关键字 final 修饰,常量按照Java命名规范需要用全部大写,单词之间用下划线隔开:
08 | final int RED_STAR = 1 ; |
09 | final int YELLOW_STAR = 2 ; |
10 | final int GREEN_STAR = 3 ; |
那么我真改了会怎么样呢?我们一起看看
2 | public static void main(String[] args){ |
上面的代码,如果去编译的话会报下面的提示:
如果是在Eclipse等集成编程环境中写的话,会直接有红色错误标识出现:
六、字面值(literal、literal value)
literal这个单词被翻译了好多种说法、字面值、字面量、直接量、常值、文本符等等,我们需要知道这些翻译都是一个意思,就是编程语言里一些内建数据类型的源代码表示。譬如:
七、基本数据类型(Primitive Type)
Java中数据类型(Data Type)分为基本数据类型(Primitive Type)和引用数据类型(Reference Data Type)。
Java中基本数据类型有八种:
1、整数(integer data type)
Java语言中使用3中表示整数的方法,分别是十进制、八进制和十六进制,平时我们使用10进制,有时候也会用16进制,仅仅会因为趣味才会去用八进制。下面演示一下三种整型表示法:
01 | public class Lesson02{ |
02 | public static void main(String[] args){ |
07 | System.out.println(i); |
08 | System.out.println(j); |
09 | System.out.println(k); |
10 | System.out.println(cafe); |
类型 | 字节 | 范围 | 举例 |
byte | 1 | -128 ~ 127 | 125 |
short | 2 | -32768 ~ 32767 | 20000 |
int | 4 | -2147483648 ~ 2147483647 | 123456789,2123456789 |
long | 8 | -9223372036854775808~9223372036854775807 | 9876543210L |
整数里的默认类型是int,也就是说你写一个整数字面值如果不明确指定他的类型,那么他一定是int类型。
想明确声明一个整数字面值是长整型的话,需要使用l或L做后缀。
01 | public class Lesson02{ |
02 | public static void main(String[] args){ |
08 | System.out.println( "a=" +a+ " b=" +b + " c=" +c+ " d=" +d+ " e=" +e); |
2、浮点数(floating-point data type)
类型 | 字节 | 范围 | 举例 |
float | 4 | 1.4E-45 ~ 3.4028235E38 | 3.1415f |
double | 8 | 4.9E-324 ~ 1.7976931348623157E308 | 3.1415,3.1415d |
01 | public class Lesson02{ |
02 | public static void main(String[] args){ |
08 | System.out.println( "a=" +a+ " b=" +b + " c=" +c+ " d=" +d+ " e=" +e); |
09 | System.out.println(Float.MIN_VALUE); |
10 | System.out.println(Float.MAX_VALUE); |
11 | System.out.println(Double.MIN_VALUE); |
12 | System.out.println(Double.MAX_VALUE); |
如果你想定义一个单精度浮点数字面量,那么你必须加f或F做后缀。
浮点数当然也可以存整数在里面。
3、布尔型(boolean)
布尔型表达一个真或假,是或否的意思。在Java中使用boolean关键字来声明一个变量为布尔类型,在Java中布尔字面值只有2个:true 和 false。注意是全小写的。
2 | public static void main(String[] args){ |
5 | System.out.println( "flag=" +flag); |
4、字符型(char)
Java里用一个单引号内的单个字符来表示一个字符字面值。
类型 | 字节 | 范围 | 举例 |
char | 2字节,16位 | ‘\u0000’ ~ ‘\uFFFF’ | ‘犇’,'\u004e’,’n’,23002 |
01 | public class Lesson02{ |
02 | public static void main(String[] args){ |
11 | System.out.println( "a=" +a+ " b=" +b + " c=" +c+ " d=" +d+ " e=" +e+ " f=" +f+ " g=" +g+ " h=" +h); |
上面的例子,如果文件以utf-8编码存储,那么编译时会报错,
因为命令行方式它人默认编码集是GBK,所以编译时请特别指出编码集为utf-8,方法如下:
额外作业:有兴趣的同学可以写一个算式,把自己的名字打印出来,如果不会话可以再学几讲再做,记住有这个事儿就行
八、赋值(assignment)初识
“=” 是个赋值运算符,我们讲运算符之前先把赋值运算符先行提出来讲一讲。他和数学里的用法一样,都是把右侧的值赋予左侧的变量。
下面用例子演示一下三种赋值方式:
2 | public static void main(String[] args){ |
6 | System.out.println( "a=" +a+ " b=" +b + " c=" +c+ " d=" +d); |
九、注释(annotation)初识
程序中的注释是程序设计者与程序阅读者之间沟通的手段,是写给程序员看的代码。通常情况下编译器会忽略注释部分,不做语法检查。
- 好的注释可以改善软件的可读性,可以让开发人员更快理解新的代码。
- 好的注释可以最大限度的提高团队开发的合作效率。
- 长期的注释习惯可以锻炼出更加严谨的思维能力。
Java中的注释有三种:
// 注释一行
/* 注释若干行 */
/** 注释若干行,并写入 javadoc 文档 */
好了,本讲就到这里,下一讲我们讲基本类型的相互转换和赋值,Take your time and enjoy it.