




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA初级编程 第二章 Java语言基础 陈峥 1 本次课程目标 理解标识符,变量和常量 认识Java基本数据类型 学会使用格式化输出 使用Java运算符书写Java表达式 理解程序控制的概念 运用条件语句控制程序的执行 理解并使用关键字break和continue Java中的数组 垃圾回收机制 理解命令行参数的使用 使用新的输入方式 2 本章词汇 byte 数据类型,字节型 boolean 数据类型,布尔型 true 真,布尔型的字面值 false 假,布尔型的字面值 null 空 new 新建 array 数组 string 字符串 argument 参数 变量 在程序运行过程中产生的数据和结果都需要存放 在内存中,而变量是Java中存储数据的基本单元 变量在使用前必须声明,语法为: 数据类型 标识符 = 值,标识符 = 值; 标识符也称变量名,一个标识符表示一块用于存 储数据的内存空间,数据类型表示该空间能存储 的数据格式和大小.在声明变量的时候可以通过 逗号隔开声明多个同类型的变量 数据类型 数据类型用来确定要存储在内存单元中的数 据的类型; 在Java中,数据类型被区分成两个种类: 原始数据类型 引用数据类型 Java数据类型 基本类型 引用类型 数据类型 boolean 浮点数类型 整数类型 字符类型 数组类型 接口类型 类类型 引用 char long int short byte double float 接口类型 类类型 数组类型 接口类型 类类型 引用 数组类型 接口类型 类类型 引用类型引用 数组类型 接口类型 类类型 原始数据类型 原始数据类型一共为八种 byte 字节型 char 字符型 boolean 布尔型 short 短整型 int 整型 long 长整型 float 浮点型 double 双精度 每种原始数据类型一次只能存放一个值,是Java 中最简单的数据形式 引用数据类型 在Java中,除了上述8种原始数据类型的变量以 外,其余的全都属于引用数据类型,其中包括: Array 数组 Class 类 Interface 接口 存储在引用类型变量中的值是该变量表示的值的 地址 标识符 变量、方法、数组、对象、类和接口等等都需要 命名,这些名称统称为标识符; Java中对于标识符的命名规则作了如下限制: 只能由英文字母、数字、下划线“_”和“$”符号组 成; 必须以英文字母、“_”或“$”开头,即不能以数字 开头; 除“_”和“$”以外,不能包含其它任何特殊字符; 不能与关键字冲突; 严格区分大小写。 并且变量名命名规范以小写字母开头,从第二个 单词开始首字母大写 作用域与生命周期 每个变量都有其作用域,离开这个作用域将无法 被直接访问 在Java中变量的作用域以来定义 变量被声明以后便在内存中开辟了一块用于存放 变量值的空间,不再使用的变量所表示的空间会 被释放,这个过程我们称为变量的生命周期 在Java中变量的生命周期与作用域相同,暨程序 执行到某句声明语句时开辟该声明变量所在的空 间,当程序执行离开该变量所在的以后,该变量 则被释放销毁结束生命周期 类型转换 程序中经常会遇到要将数据类型进行转换的情况 (如:在一个表达式中存在不同类型的操作数时 ) 数据类型转换有两种情况: 自动类型转换 强制类型转换 自动类型转换 自动类型转换也称作隐式类型转换; 将一种类型的变量赋值给另一种类型的变量时, 只要满足以下条件,就会发生自动类型转换: 两种类型之间相互兼容; 目标类型大于源类型; 如: char ch = A; int num = ch; float f = num; double d = f; /类型转换自动发生,无需显式说明 强制类型转换 强制类型转换也称作显式类型转换; 如果被转换的值的数据类型大于其目标类型,将 会丢失部分信息; 如: 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.printf()实现C语言的输出方式,需 要转换符支持 连接符 在Java中+号具备两种操作: 当+号两边的操作数皆为数据类型的时候执行加 法运算,结果为数据类型 当+号两边任意一边的操作数为字符串的时候执 行连接操作,结果为字符串类型 运算符与表达式 运算符是通过一定的运算规则操作一个或多 个操作数,并生成结果的特定符号; 运算符和操作数的有效组合称为表达式; Java提供了一系列丰富的运算符,包括: 算术运算符 赋值运算符 关系运算符 逻辑运算符 三元运算符 算术运算符 算术运算符主要用于数学计算,一般使用数值作为操作数: 运算符说 明 一元+递增:a+或+a -递减:a-或-a -取负:-a 二元+加法:a+b -减法:a-b *乘法:a*b /除法:a/b %取模:a%b 赋值运算符(一) =在程序中是赋值运算符,其作用是获取右边的值,赋 给左边 右边可以是任何有结果的表达式,常量或者变量 左边必须是一个已声明的变量 对于基本数据类型赋值很直接,是将实际的值复制一 份赋给接收的变量存储,对这个值的任何后续修改都 不会影响其他变量 对于引用数据类型的赋值则不同,由于引用数据类型 的变量实际保存的是一个指向实际值的地址,所以使 用=的结果只是将地址交给接收的变量,让这个变量 也引用这个空间,如果这个空间的值被修改,所有引 用这块空间的变量都会受影响 赋值运算符(二) 在Java中对于一般的运算表达式也提供了一种简 写方式 运算符说明 +=a=a+b可以写成a+=b -=a=a-b可以写成a-=b *=a=a*b可以写成a*=b /=a=a/b可以写成a/=b %=a=a%b可以写成a%=b 关系运算符 关系运算符可以测试两个操作数之间的关系(但不会改变 操作数的值),关系表达式的结果为boolean型 true/false: 运算符说 明 =检查两个数的相等性 !=检查两个数的不等性 检查左边的值是否大于右边的值 =检查左边的值是否大于或等于右边的值 、=、判断语句 循环语句 跳转语句 选择语句 选择语句也称作条件语句或判断语句; 选择语句主要用来控制程序在何种情况下执 行某一部分; 选择语句包括: if语句 ifelse语句 ifelse if语句 switchcase语句 循环语句 循环语句可用于重复执行相同的操作; 循环语句包括: while语句 dowhile语句 for语句 跳转语句 跳转语句允许以非线性的方式执行程序,可以将 控制权转到程序的其它部分; 跳转语句包括: break语句 continue语句 break可以使用在循环和switch中,continue只能存 在循环中 break和continue可以通过标签指定跳转的位置,替 代C/C+的goto语句 数组 数组用于将相同类型的数据存储在连续的存储单 元中; 可以通过指定数组的名称和长度来声明数组; 一旦声明数组的大小,就不能再修改; 数组元素通过数组名和索引来访问,索引从0开 始; 数组可以是一维,也可以是多维。 回顾C语言中的数组 在C语言中,从存储方式上讲,声明数组有两种 情况; 在栈内存中分配空间,如: int ary10; /声明有10个整型元素的数组 在堆内存中分配空间,如: 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函数。 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 ary.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 ary2; ary2 = ary1; 10 8 6 4 2 堆栈 ary1 ary2 数组赋值示例 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.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对数组下标越界情况强加约束; 如果试图访问不在有效索引以内的元素,将会引发运行错 误。 垃圾回收机制 在C语言中,分配的堆内存在使用完毕以后,必须 进行释放,否则将会造成内存泄漏; 同样的,在Java中由new分配的内存也将存在内存 泄漏的可能; 但释放内存的任务是由Java虚拟机来完成的,程序 员可以不再关心此项工作; 如果某块内存空间没有任何引用指向它,那么虚 拟机就将其认定为垃圾; 虚拟机并不是随时随地地立即回收垃圾,而是在 系统比较空闲的时候,才会执行回收任务。 命令行参数 在命令行使用java命令执行程序时,可以将一些 参数传递给main函数; main函数携带的String(字符串数组)类型的形 参args正是为了接收这些来自命令行的参数; 可以从命令行传递任意多个字符串给main函数, 其间使用空格隔开,也可以不传递任何参数; 这些传递进来的多个字符串最后以字符串数组的 形式,供main函数中加以使用。 输入语句 在JDK5.0以前的版本从键盘接收输入是件比较复 杂的IO操作 而现在提供了一种方便简单的输入方式:Scanner import 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(); 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 InputStreamRead
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高血糖的紧急处置方法
- 海滨小城(第二课时)学习任务单
- 精神障碍护理学自考试题及答案
- 院感专职培训心得汇报
- 急诊院前急救护理
- 计量器具全流程管理规范
- 2025年中国女士奢侈鞋行业市场全景分析及前景机遇研判报告
- 重症肝炎护理病例讨论
- 专科特色健康教育体系构建
- 企业岗位培训
- 预防职务犯罪交流课件
- 2025年初一下册语文-课内现代文复习18课.《井冈翠竹》(教师版)
- 人工智能应用产业园及配套基础设施项目可行性研究报告(范文模板)
- 未成年人权益保护法律解析
- 药品售后服务承诺书示例
- 2025年南模中学自招试题及答案
- 《水利工程建设项目文件收集与归档规范SLT 824-2024》知识培训
- “艾梅乙”感染者消除医疗歧视制度-
- 肉类食品供货合同7篇
- 天津师范大学《心理与教育统计学》2023-2024学年第二学期期末试卷
- 铝合金楼梯踏步施工方案
评论
0/150
提交评论