配色: 字号:
jave语言基础——语法基础
2012-03-27 | 阅:  转:  |  分享 
  
Java语言基础—语法基础

主讲:董旭源

Contents

语句以及控制结构

表达式

运算符

数据表示以及数据类型

标识符、关键字

数组

标识符(Identifier)

?标识符定义

?在java语言中用来给一个类、变量或方法命名

的符号

?标识符的命名规则:

?以字母,“_”或“$”符号开头

?可以包含字母、“_”、“$”和数字符号

?大小写敏感

?不能与保留关键字冲突

?没有长度限制

标识符命名原则

?可读性

?望文生义

?举例(以下的标识符合法吗?)

?HelloWorld

?class

?_983

?data#

?$128

?classFirstJava{…}

关键字(Keywords:50个)

?被赋予特定含义

?专门用途,不能用作标识符

?都是小写

?Java中truefalse不是关键字,而是boolean

类型的字面量

?保留字:const,goto

?所有的关键字都是小写,friendly,sizeof不是

java的关键字

关键字列表

?abstractbooleanbreakbyte

casecatchcharclasscontinue

defaultdodoubleelseextends

enumfalsefinalfinallyfloat

forifimplementsimport

instanceofintinterfacelong

nativenewnullpackageprivate

protectedpublicreturnshortstatic

superswitchsynchronizedthis

throwthrowstransienttruetry

voidvolatilewhile

数据

?数据的表示

?常量

?变量

?数据的类型

数据的表示

?常量

?用字符串来表示,数据的值,但有不同的类型

?例如

?123(整型常量)

?''A''(字符常量)

?3.14159

?true/false(boolean常量)

?“helloworld”(字符串常量)

?被final修饰——值不可变的变量

?与C语言中的const

数据的表示

?变量

?本质上是内存的区域,作为Java最基本的存储

单元

?要素

?变量名、类型、作用域

?变量名:通过它来访问变量(值)

?变量的使用原则

?先声明,然后再赋值,才能使用

?Java是强类型,在声明变量是必须指定类型

?举例

变量分类

?按数据类型进行分类

?基本数据类型

?引用数据类型

?按位置(作用域)进行分类

?局部变量

?方法、语句块内部定义的变量

?成员变量

?方法外、类内部定义的变量

变量是有大小的

Java的数据类型

?基本数据类型

?数值型

?整数型:byte,short,int,long

?浮点型:float,double

?字符型:char

?布尔型:boolean

?引用数据类型

?数值

?类

?接口

Java的基本数据类型

?byte8-bit整形值

?short16-bit整形值

?int32-bit整形值

?long64-bit整形值

?float32-bit浮点数值

?double64-bit浮点数值

?char16-bitunicode编码的字符

?boolean布尔值(true或false)

举例

?byteb=1;

?计算机的表示:00000001

?byte的值范围是:-128~127

shorta=57;0000000000111001

1111111111000111

1,正整数,存储该数字的二进制原码。

shorta=-57;

2,负整数,存储该数字的二进制补码。

inta=57;00000000000000000000000000111001

inta=-57;11111111111111111111111111000111

高字节位低字节位

整数在计算机中的表示

浮点数据类型

?float32位(4个字节)

?double64位(8个字节)

?程序中浮点数据的表示

?直接在程序中书写的浮点数默认为dobule类

型。

?直接表示一个float类型的值必须在数字后跟

‘f’或‘F’

?直接表示一个double类型的值可以在数字后

跟‘d’或‘D’

问题

?Float型数据32位,与int相同,但float的范围

远比int大,为什么?

?为什么说浮点数表示有误差?

?为什么Java数据是可移植的,而C不能?

?浮点数的精度?

字符类型char

?其实就是一个无符号的16位整型,

?其范围为0~65535,用来存储该字符Unicode编码值

?因为Unicode编码中包含汉字的编码,所以一个char

类型的变量也可以存储一个汉字字符。

?在代码中直接给出的一个字符值必须用单引号括起来。

?charzhChar=?中’;

?charenChar=?a?;

?charucChar=?\u0060?;

?对某些不方便直接书写或直接书写有歧义的字符,

java语言规定用转义字符给出。

对字符变量赋值

?可以把char类型数据当作整数数据来操作。

?所以能给字符变量赋值的有

?字符本身

?整数(10、8、16进制)

?Unicode编码:?\u……?

转义符

转义字符描述

\ddd1到3位8进制数所表示的字符(ddd)

\uxxxx1到4位16进制数所表示的字符(xxxx)

\’单引号字符

\’’双引号字符

\\反斜杠字符

\r回车,把光标移至行首

\n换行

\f走纸换页

\t横向跳格

\b注:是退格back而非backspace(删除)

布尔类型

?布尔值表示真假

?区别

?在C/C++中,非零为真,但有4个假

?0(=48)

??\0?(=0)

?Null

?False

?但Java中只有true,false

?在Java规范中没有定义boolean的内存大小

?推荐是8bits

?但要取决于JVM的实现

类型转换

?强制类型转换

?一般的,大容量数据类型的变量不能赋给小容

量类型的变量

?隐式类型转换(类型提升)

类型的自动提升

char

byte

short

int

double

float

long

说明:

1,在本图中,顺着箭头方向的类型转换可以自动进行,

逆箭头方向的转换或无箭头类型之间的转换必须强制转换。

2,能将A类型变量自动转换成B类型变量的前提条件是这种

转换不会造成数据和精度的丢失,即A类型的取值范围是

B类型的取值范围的子集。

基本数据类型的取值范围

TypeBitsBytesMinimumRangeMaximumRange

boolean81Onlytwovalues:trueorfalse

byte81-2727-1

short162-215215-1

char1620216-1

int324-231231-1

long648-263263-1

float324NotneededNotneeded

double648NotneededNotneeded

运算符

?算术运算符

?若(操作数有double类型数据)

?表达式结果为double

?若(操作数有float类型数据)

?表达式结果为float

?若(操作数有long类型数据)

?表达式结果为long

?否则

?结果都是int

表达式

?符合一定语法规则的运算符、操作数序列

?表达式有类型和值

?表达式的运算顺序

?按运算符的优先级别进行

?优先级相同的按约定的结合方向进行

?三目运算符

?X?Y:Z

语句的控制结构

?顺序结构

?选择分支结构

?If

?If-else

?If-elseif-elseif-else

?switch(exp){casevalue1:statement1;break;}

?循环结构

?for(exp1;exp2;exp3){}

?while(exp){}

?do{}while(exp);

break&.continue

?break

?终止某个语句块的执行

?若在循环体中,可以强行退出循环

?若break;语句不出现在循环或者switch中时编

译会出错

?continue

?在循环体中使用continue表示终止当前(一次)循

环过程,即跳过循环体中continue语句后没有

执行的循环,并开始下一次循环过程

练习

?计算阶乘

?1!+2!+3!+4!+…+10!

?输出1~200以内的质数

?质数:除了1和自身外再也找不到其他约数

?编写程序,判断给定的某个年份是否是闰年。

?闰年的判断规则如下:

?(1)若某个年份能被4整除但不能被100整除,则

是闰年。

?(2)若某个年份能被400整除,则也是闰年。

练习

?利用for循环打印99乘法表?

?输出所有的水仙花数,把谓水仙花数是指一个数3

位数,其各各位数字立方和等于其本身,

?例如:153=111+333+555

数组

?定义

?数组也是对象

?内部元素的类型相同

?声明时要指定元素的类型

?每一个元素都是变量

创建数组

?声明一个数组

?例如:int[]nums;

?开辟内存空间

?如:nums=newint[7];

?初始化赋值

?如:num[0]=10;

?通过下标来访问数组的元素

?下标是数组的位置

其他形式创建数组

?声明、初始化

?如:int[]nums={1,2,3,4,5,6,7};

?使用new

?如:int[]nums=newint[]{1,2,3};

?错误示范

?int[]nums=newint[3]{1,2,3};

数组的内存表示

?画图

数组的遍历

?数组的属性:length

?只读属性

?下标越界

引用数据类型的数组

?Dog[]dogs=newDog[10];

?内存的表示?

?元素的默认值是

?Null

多维数组

?声明、初始化、遍历

?Java中的多维数组

?其实都是一维数组

?内存表示

数组的copy

?引用赋值vs.数组(对象)的拷贝

?手工copy数组

?使用System类中的静态方法

?System.arraycopy(src,src_index,dest,

dest_index,length)

练习

?定义一个int型的一维数组,包含10个元素,分

别赋一些随机整数,然后求出所有元素的最大值

,最小值,平均值,和值,并输出出来。

?完成九宫格程序?

TheEnd

Aimforperfection,butexpectittotakea

longtimetobecomeverygood

献花(0)
+1
(本文系toceansoft首藏)