《Java语言基础(北大青鸟上课课件).ppt》由会员分享,可在线阅读,更多相关《Java语言基础(北大青鸟上课课件).ppt(40页珍藏版)》请在金锄头文库上搜索。
1、JAVA初级编程初级编程第二章Java语言基础陈峥陈峥1本次课程目标本次课程目标理解标识符理解标识符, ,变量和常量变量和常量认识认识JavaJava基本数据类型基本数据类型学会使用格式化输出学会使用格式化输出使用使用JavaJava运算符书写运算符书写JavaJava表达式表达式理解程序控制的概念理解程序控制的概念运用条件语句控制程序的执行运用条件语句控制程序的执行理解并使用关键字理解并使用关键字breakbreak和和continuecontinueJavaJava中的数组中的数组垃圾回收机制垃圾回收机制理解命令行参数的使用理解命令行参数的使用使用新的输入方式使用新的输入方式2本章词汇本章
2、词汇byte数据类型,字节型数据类型,字节型boolean数据类型,布尔型数据类型,布尔型true真,布尔型的字面值真,布尔型的字面值false假,布尔型的字面值假,布尔型的字面值null空空new新建新建array数组数组string字符串字符串argument参数参数变量变量在程序运行过程中产生的数据和结果都需要存放在内存中,而变量是Java中存储数据的基本单元变量在使用前必须声明,语法为: 数据类型数据类型 标识符标识符 = = 值值,标识符标识符 = = 值值 ;标识符也称变量名,一个标识符表示一块用于存储数据的内存空间,数据类型表示该空间能存储的数据格式和大小.在声明变量的时候可以通
3、过逗号隔开声明多个同类型的变量 数据类型数据类型数据类型用来确定要存储在内存单元中的数据的类型;在Java中,数据类型被区分成两个种类:原始数据类型原始数据类型引用数据类型引用数据类型Java数据类型数据类型基本类型引用类型数据类型boolean浮点数类型整数类型字符类型数组类型接口类型类类型引用charlongintshortbytedoublefloat接口类型类类型数组类型接口类型类类型引用数组类型接口类型类类型引用类型引用数组类型接口类型类类型原始数据类型原始数据类型原始数据类型一共为八种byte byte 字节型字节型char char 字符型字符型boolean boolean 布
4、尔型布尔型short short 短整型短整型int int 整型整型long long 长整型长整型float float 浮点型浮点型double double 双精度双精度每种原始数据类型一次只能存放一个值,是Java中最简单的数据形式引用数据类型引用数据类型在Java中,除了上述8种原始数据类型的变量以外,其余的全都属于引用数据类型,其中包括:Array 数组Class 类Interface 接口存储在引用类型变量中的值是该变量表示的值的地址标识符标识符变量、方法、数组、对象、类和接口等等都需要命名,这些名称统称为标识符;Java中对于标识符的命名规则作了如下限制:只能由英文字母、数字
5、、下划线“_”和“$”符号组成;必须以英文字母、“_”或“$”开头,即不能以数字开头;除“_”和“$”以外,不能包含其它任何特殊字符;不能与关键字冲突;严格区分大小写。并且变量名命名规范以小写字母开头,从第二个单词开始首字母大写作用域与生命周期作用域与生命周期每个变量都有其作用域,离开这个作用域将无法被直接访问在Java中变量的作用域以来定义变量被声明以后便在内存中开辟了一块用于存放变量值的空间,不再使用的变量所表示的空间会被释放,这个过程我们称为变量的生命周期在Java中变量的生命周期与作用域相同,暨程序执行到某句声明语句时开辟该声明变量所在的空间,当程序执行离开该变量所在的以后,该变量则被
6、释放销毁结束生命周期类型转换类型转换程序中经常会遇到要将数据类型进行转换的情况(如:在一个表达式中存在不同类型的操作数时)数据类型转换有两种情况:自动类型转换强制类型转换自动类型转换自动类型转换自动类型转换也称作隐式类型转换;将一种类型的变量赋值给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换:两种类型之间相互兼容;目标类型大于源类型;如:char ch = A;int num = ch;float f = num;double d = f;/类型转换自动发生,无需显式说明类型转换自动发生,无需显式说明强制类型转换强制类型转换强制类型转换也称作显式类型转换;如果被转换的值的数据类型
7、大于其目标类型,将会丢失部分信息;如:int x = 65;char ch = x;这样的语句将报错,因为char类型小于int类型,编译器无法将其自动转换,只能进行强制转换:int x = 65;char ch = (char)x;输出语句输出语句如果要将某些信息打印到屏幕上,就必须使用输出语句;使用System.out.println()实现换行输出效果;使用System.out.print()实现输出但不换行效果;以上无论输出什么类型的数据,只需将数据作为参数传递给它们即可,而无需像C语言中那样,使用%s、%d之类的控制字符,但是支持/n,/t等格式符使用System.out.print
8、f()实现C语言的输出方式,需要转换符支持连接符连接符在Java中+号具备两种操作:当+号两边的操作数皆为数据类型的时候执行加法运算,结果为数据类型当+号两边任意一边的操作数为字符串的时候执行连接操作,结果为字符串类型运算符与表达式运算符与表达式运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号;运算符和操作数的有效组合称为表达式;Java提供了一系列丰富的运算符,包括:算术运算符赋值运算符关系运算符逻辑运算符三元运算符算术运算符算术运算符算术运算符主要用于数学计算,一般使用数值作为操作数:运算符运算符说说 明明一元一元+递增递增:a+:a+或或+a+a-递减递减:a-:a-
9、或或-a-a- -取负取负:-a:-a二元二元+ +加法加法:a+b:a+b- -减法减法:a-b:a-b* *乘法乘法:a*b:a*b/ /除法除法:a/b:a/b% %取模取模:a%b:a%b赋值运算符赋值运算符(一一)=在程序中是赋值运算符,其作用是获取右边的值,赋给左边右边可以是任何有结果的表达式,常量或者变量左边必须是一个已声明的变量对于基本数据类型赋值很直接,是将实际的值复制一份赋给接收的变量存储,对这个值的任何后续修改都不会影响其他变量对于引用数据类型的赋值则不同,由于引用数据类型的变量实际保存的是一个指向实际值的地址,所以使用=的结果只是将地址交给接收的变量,让这个变量也引用这
10、个空间,如果这个空间的值被修改,所有引用这块空间的变量都会受影响赋值运算符赋值运算符(二二)在Java中对于一般的运算表达式也提供了一种简写方式运算符运算符说明说明+=+=a=a+ba=a+b可以写成可以写成a+=ba+=b-=-=a=a-ba=a-b可以写成可以写成a-=ba-=b*=*=a=a*ba=a*b可以写成可以写成a*=ba*=b/=/=a=a/ba=a/b可以写成可以写成a/=ba/=b%=%=a=a%ba=a%b可以写成可以写成a%=ba%=b关系运算符关系运算符关系运算符可以测试两个操作数之间的关系(但不会改变操作数的值),关系表达式的结果为boolean型true/fals
11、e:运算符运算符说说 明明=检查两个数的相等性检查两个数的相等性!=!=检查两个数的不等性检查两个数的不等性 检查左边的值是否大于右边的值检查左边的值是否大于右边的值 =检查左边的值是否大于或等于右边的值检查左边的值是否大于或等于右边的值=、=、判断语句循环语句跳转语句选择语句选择语句选择语句也称作条件语句或判断语句;选择语句主要用来控制程序在何种情况下执行某一部分;选择语句包括:if语句ifelse语句ifelse if语句switchcase语句循环语句循环语句循环语句可用于重复执行相同的操作;循环语句包括:while语句dowhile语句for语句跳转语句跳转语句跳转语句允许以非线性的方
12、式执行程序,可以将控制权转到程序的其它部分;跳转语句包括:break语句continue语句break可以使用在循环和switch中,continue只能存在循环中break和continue可以通过标签指定跳转的位置,替代C/C+的goto语句数组数组数组用于将相同类型的数据存储在连续的存储单元中;可以通过指定数组的名称和长度来声明数组;一旦声明数组的大小,就不能再修改;数组元素通过数组名和索引来访问,索引从0开始;数组可以是一维,也可以是多维。回顾回顾C语言中的数组语言中的数组在C语言中,从存储方式上讲,声明数组有两种情况;在栈内存中分配空间,如:int ary10; /声明有10个整型元
13、素的数组在堆内存中分配空间,如:int *p = NULL; /声明整型指针/指针指向堆空间p = (int*)malloc(10 * sizeof(int);C语言允许数组被开辟在栈或堆中-。new关键字关键字在Java中,不允许将数组分配在栈内存中,只能分配在堆内存中;Java中声明数组需要将类型修饰,使用,一个表示一个维数:int ary或int ary;Java中没有类似于malloc、calloc、realloc和free等函数,取而代之的是new关键字;new是Java中内置的操作符;new操作符用来从堆中分配指定类型的内存空间,并返回相应类型的引用,其作用类似于malloc函数。
14、int ary=new int5;声明数组示例声明数组示例public class ArrayDemo public static void main(String args) /声明整型数组的引用,类似于C中的 int *p; int ary; /为数组引用在堆内存中分配实际的内存空间 /类似于C中的 p = (int*)malloc(10 * sizeof(int); ary = new int10; /使用循环为数组元素赋值 for (int i = 0; i ary.length; i+) aryi = i; /使用循环将数组元素逐个输出到控制台 for (int i = 0; i a
15、ry.length; i+) System.out.println(aryi); Java中声明数组的几种方式中声明数组的几种方式在Java中声明数组有如下方式:/仅声明数组的引用,但没有分配内存空间float fAry;/声明数组的同时,根据指定的长度分配内存,但数组中没有值char chAry = new char10;/声明数组并分配内存,同时将其初始化int ary1 = new int1, 2, 3, 4, 5;/与前一种方式相同,仅仅只是语法相对简略int ary2 = 1, 2, 3, 4, 5;数组之间赋值数组之间赋值int ary1 = 2, 4, 6, 8, 10;int
16、ary2;ary2 = ary1; 108642堆栈ary1ary2数组赋值示例数组赋值示例public class ArrayDemo public static void main(String args) int ary1 = 2, 4, 6, 8, 10; /声明并初始化数组1 int ary2; /声明数组2 ary2 = ary1; /将数组1赋值给数组2 ary23 = 1024; /通过数组2修改其中一个元素的值 /打印出数组1中的元素 System.out.println(数组1中的元素:); for (int i = 0; i ary1.length; i+) System
17、.out.println(ary1i); /打印出数组2中的元素 System.out.println(数组2中的元素:); for (int i = 0; i ary2.length; i+) System.out.println(ary2i); 关于数组长度关于数组长度在Java中,程序员可以不再关注数组的长度,数组自带的length属性将负责保管数组的长度;对于二维数组可以分别使用ary.length和ary0.length获取行和列的长度C语言不检查数组的边界,数组索引完全由程序员掌握; Java对数组下标越界情况强加约束;如果试图访问不在有效索引以内的元素,将会引发运行错误。垃圾回收
18、机制垃圾回收机制在C语言中,分配的堆内存在使用完毕以后,必须进行释放,否则将会造成内存泄漏;同样的,在Java中由new分配的内存也将存在内存泄漏的可能;但释放内存的任务是由Java虚拟机来完成的,程序员可以不再关心此项工作;如果某块内存空间没有任何引用指向它,那么虚拟机就将其认定为垃圾;虚拟机并不是随时随地地立即回收垃圾,而是在系统比较空闲的时候,才会执行回收任务。命令行参数命令行参数在命令行使用java命令执行程序时,可以将一些参数传递给main函数;main函数携带的String(字符串数组)类型的形参args正是为了接收这些来自命令行的参数;可以从命令行传递任意多个字符串给main函数
19、,其间使用空格隔开,也可以不传递任何参数;这些传递进来的多个字符串最后以字符串数组的形式,供main函数中加以使用。输入语句输入语句在JDK5.0以前的版本从键盘接收输入是件比较复杂的IO操作而现在提供了一种方便简单的输入方式:Scannerimport java.util.Scanner;public class Demo public static void main(String args) Scanner in=new Scanner(System.in);String str=in.next();int num=in.nextInt();double d=in.nextDouble(
20、); IO的输入方式的输入方式传统的Java命令行输入使用IO方式import java.io.BufferedReader;import java.io.InputStreamReader;public class Demo public static void main(String args)throws Exception BufferedReader br=new BufferedReader(new InputStreamReader(System.in); String msg=br.readLine(); int num=Integer.parseInt(br.readLine(); double db=Double.parseDouble(br.readLine(); 总结总结Java中的数据类型大体上分为两种:原始数据类型和引用数据类型;变量是存储数据的基本单位;运算符和流程控制基本上与C相似;Java中数组是引用数据类型,只能存放在堆内存中;数组必须由new关键字为其分配内存;释放内存的工作由Java虚拟机的垃圾回收机制来完成;可以利用命令行参数和Scanner接收来自用户的输入。