版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元2
Java基础2.1常用编程元素程序设计任务2.1输出货运车辆运费结算单任务描述货运车辆运费管理模块中要实现车辆运费的计算,车辆运费信息一般涉及到如车型、车辆规格、车辆容载量、单价、实际托运量等数据。本单元的任务要解决车辆运费信息的描述,以及运费信息在计算机中的表示与存储。我们要清楚如何使用计算机语言来描述车辆的相关数据信息、控制计算及处理流程,以及数据如何存储。最终输出车辆运费结算单效果如图2-1-1所示。图2-1-1任务2.1运行结果任务2.1输出货运车辆运费结算单知识目标了解数据类型的分类。熟悉Java基本数据类型与变量及常量。熟悉Java运算符与表达式。熟悉Scanner类与String类。能力目标能熟练使用不同基本数据类型描述数据信息。能熟练使用Java运算符进行运算。能熟练使用String类描述数据信息。能熟练使用Scanner类及方法实现人机交互。素养目标行为准则教育知识迁移的学习软件工匠精神相关知识程序设计中,数据是程序的必要组成部分,也是程序处理的对象。针对程序所能够处理的数据,就是程序的各个数据类型的划分。Java数据类型分为两大类:基本数据类型和引用数据类型Java的8种基本数据类型基本数据类型字符型布尔型数值型整型浮点型charbooleanshortfloatdoublebyteintlong引用数据类型字符串数组类StringJava的引用数据类型String不是基本类型,而是引用类型,是Java库中一个预定义的类。目前只需要知道String如何声明字符串变量。如String用于存储一串字符。Stringstr1=“我的爱好是踢足球”;具体学习在字符串子单元详细讨论。Java中引用数据类型String类型类本质上说,一个类是一个程序员定义的类型。它是引用类型,意味着该类类型变量都可以引用该类的一个实例。具体学习在面向对象设计单元详细讨论。数组数组是具有相同数据类型的一组数据的集合,数组元素的数据类型决定数组的数据类型。声明一个数组变量只是创建一个对数组引用的存储位置。具体学习在数组子单元详细讨论。Java数据类型的分类2.1数据类型Java基本数据类型Java整数类型类型内存空间大小空间byte8位有符号数short16位有符号数int32位有符号数long64位有符号数小大Java浮点型类型类型内存空间大小空间float32位double64位小大2.1数据类型Java基本数据类型布尔类型(boolean)布尔类型也称逻辑类型,通常被用在流程控制中作为判断条件,只有两个值:真(true)和假(false)。例如: booleanflag=true; booleanflag=false;字符类型(char)字符类型char用于表示单个字符,占用2个字节。例如: charc='A'; charc='4'; charc=98;(等同于charc=‘b’)2.1数据类型举例:认识Java数据类型2L9002.122.175999“我是一名学生”falsetrue1.2F2.5f5.0534E+1整型浮点型布尔型字符型
'B'
‘优'字符串“ILOVECHINA”2.1数据类型2.2变量变量(Variable)变量如同烧杯,所盛的液体是可以更换的变量作用:
用于存储数据——输入、输出和中间数据。在程序语言中扮演着最基本的角色之一。它是存储数据的载体,用于表示在程序中可能被改变的值,变量的数值可以被读取和修改。变量声明:数据类型变量名;数据类型变量名=数值或表达式;注意:变量在使用前必须声明
变量标识符标识符是用户定义的,用于表示变量名、类名、接口名、方法名、方法的参数名等符号。标识符命名规则Java代码中变量命名规范变量命名符合标识符的命名规则,通常都以小写字母开头,并且应该能说明变量的用途。如果有两个单词构成,第一个单词首字母字母小写,后续单词首字母大写。由字母、数字、下划线_、美元符号$组成首字符不能是数字标识符中字母严格区分大小写不能包含运算符不能是关键字(50个)标识符名称最好有意义2.2变量与常量常量final数据类型常量名=值;常量声明:
所谓常量,就是固定不变的量,其一旦被定义并赋初值后,它的值就不能再被改变。命名规则:常量名和变量名规定一样,都要符合标识符的命名规则常量名通常全部使用大写字母的命名方式组成,以彰显其为常数,不能修改其值。2.2变量与常量举例:合法变量命名下列哪些是合法的变量名?a++4abc_testscoreimportabc#d√√Java中公认的命名习惯变量应以小写字母开头,若由多个单词组成,则内部的每个单词的首字母大写。例如:price、newName、boxSize、mySourceCode常量应全部大写字母组成,若由多个单词组成,则以下划线分隔。例如:PI、MAX_WIDTH、BUSINESS_TAX_RATE123abctestNumclassMr.wangage_of_student半径√√√!!!但是不推荐使用中文命名2.2变量与常量示例:声明变量初始值为1000的long型变量num;初始值为3.4的float型变量rate;初始值为34.45的double型变量score;初始值为4的char型变量ch1;初始值为true的boolean型变量flag;初始值为0的int型变量count;longnum=1000L;floatrate=3.4F或者3.4f
;double
score=34.45;charch1=‘4’;boolean
flag=true;int
count=0;2.2变量与常量2.3数据类型转换类型转换是将一个值从一种数据类型更改为另一种数据类型的过程。数据类型转换有两种方式,即隐式转换和显式转换。不会溢出溢出隐式转换
从精度低向精度高的数据类型转换,
也称为自动转换。显式转换
从精度高向精度低的数据类型转换,
也称为强制转换。(数据类型)要转换的值数据类型转换不同数据类型数据间的优先关系精度低----------------------------------------------------------------->精度高byte->short->char->int->long->float->double自动类型转换规则操作数1类型操作数2类型转换后的类型byte、short、charintintbyte、short、char、intlonglongbyte、short、char、int、longfloatfloatbyte、short、char、int、long、floatdoubledoubleJava中当两个数据类型不同的运算对象进行二元运算时,Java自动把精度较低的类型转换成另一个精度较高的类型。2.3数据运算操作Java运算符及其表达式赋值表达式由赋值运算符和操作数组成。赋值运算符用于将其右边表达式的值赋给左边的变量。变量名=
表达式;
表达式可以是常量、变量、运算符(如算术运算符)与操作数的组合。举例:Z=(X*4)+(7–Y)表达式
表达式
表达式
赋值运算符两边操作数的数据类型不一致时,如果左边操作数的数据类型精度高,则右边操作数的数据类型自动转换成与左边操作数相同的类型,再赋值给左侧操作数。否则,需要使用强制类型转换。赋值运算符及其表达式2.3数据运算操作算术运算符及其表达式算术表达式由算术运算符和操作数组成。用于完成基本的算术运算。算术运算符的操作数包括常量、变量等。操作数操作数运算符+-*/%双目运算符在进行取余运算(%)或者是除法运算(/)时,0不能做除数,否则系统会报错。取余运算(%)通常用于正整数,实际上它也可用于负整数和浮点数。在进行除法运算(/)时,如果操作数都是整数,除法的结果就是整数,小数部分被舍去。如果其中一个操作数是浮点数,则除法结果就是浮点数。“+”用于字符串之间表示连接的作用“abc”+”efg”Java运算符及其表达式2.3数据运算操作自增/自减运算符及其表达式自增/自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。自增/自减运算符作用是使变量的值加1或减1。operation++:自增1,先使用operation再自增1++operation:自增1,先自增1再使用operationoperation--:自减1,先使用operation再自减1--operation:自减1,先自减1再使用operation例如:int
x=5;inty=(++x)*4;
//x先自增1,即x=6,再使用x,y=6*4=24执行下面语句后,x,y的值分别是多少?Java运算符及其表达式2.3数据运算操作关系运算符及其表达式关系运算符是二元运算符,用来判断一个操作数与另一个操作数之间的关系。关系运算符的计算结果是布尔类型(boolean)。运算符用法返回结果>op1>op2op1大于op2时,结果为true>=op>=op2op1大于等于op2时,结果为true<op1<op2op1等于op2时,结果为true<=op1<=op2op1小于等于op2时,结果为true==op1==op2op1等于op2时,结果为true!=op1!=op2op1不等于op2时,结果为true请问flag1、flag2的值分别是多少?intm=5;intn=3;booleanflag1=(m>8);booleanflag2=(n<=3);flag1=falseflag2=trueJava运算符及其表达式逻辑运算符及其表达式逻辑运算符是对真和假两种逻辑值进行运算,运算后的二结构仍是一个逻辑值。逻辑运算值必须是boolean型数据。运算符用法返回结果&&(与)op1&&op2op1和op2都是true时,返回true||(或)op1||op2op1或者op2是true时,返回true!(非)!op1op1为false时,返回true请问flag1、flag2、flag3的值分别是多少?boolean
b=true;intm=5;intn=3;booleanflag1=b&&(m>n);booleanflag2=b||(m>10);booleanflag3=!b;flag1=trueflag2=trueflag3=falseJava运算符及其表达式2.3数据运算操作示例1:分解数字已知一个4位的数字num=3785,利用算术运算符%与/,分解出该数值的千位、百位、十位、个位。取余运算符%整除运算符/千位:first=num/1000百位:second=
num%1000/100十位:third=num%100/10个位:forth=num%102.3数据运算操作2.4Java程序语句程序是由许多语句组成,而语句则由表达式组成。表达式则由操作数与运算符所组成,操作数可以是常量、变量、也可以是方法。计算机执行程序就是由若干条语句进行的,在每条语句结尾加上分号。Java中的语句有多种形式,表达式语句和声明语句是最基本的两种语句。只有下述的表达式类型的结尾加上分号后,才可以成为语句。赋值表达式含有=运算符的表达式。如:score=78;自增自减表达式含有++或—的前缀或后缀形式的表达式。如:++i;或者k--;方法调用(不管是否有返回值)对象的创建利用new创建对象的表达式表达式语句Java程序语句声明语句
通常也称为局部变量声明语句,就是声明变量并给它赋一个初始化值。空语句分号是终结符,表示语句结束。分号本身就是一个什么都不做的语句,即空语句。语句中的空格
在Java程序语句中,空格是必不可少的。可以使程序具有可读性,更加美观。复合语句使用花括号{和}把零或多个语句组成块。块可以出现在任何运行单个语句的出现的地方,因为块也是语句,只不过它是复合的,有时称为复合语句。2.4语句System.out.println();
//换行打印,输出之后会自动换行System.out.print();
//不换行打印System.out.printf();
//按格式输出例如:System.out.println(“HelloWorld”);
//换行打印,输出后自动换行System.out.print(1000);
//不换行打印System.out.printf("Java成绩是:%d",88);
//按格式输出System.out.printf("Java成绩是:%.2f",100.0/3.0);
//按格式输出控制台输出语句使用System.out.println(x)方法将数值x输出到控制台上。Java程序语句2.4语句输出结果如下:提升:输出如下结果:示例2:计算圆的面积已知圆的半径radius的值为3.5,计算圆的面积。定义常量PIfinaldoublePI=3.1415;定义变量半径radius,并赋初始值;doubleradius=3.5计算面积area=PI*radius*radius;输出面积System.out.println(area);2.4语句练习1:计算球的表面积和体积已知球的半径radius的值为4.5,PI是3.14159,计算球的表面积和体积。2.4语句控制台输入Java使用System.out来表示标准输出设备,而使用System.in来表示标准输入设备。默认情况下,输出设备是显示器,而输入设备是键盘。Java并不直接支持控制台输入,但是可以使用Scanner类创建它的对象,然后对象调用自己的方法使得这个对象完成某个任务,即读取来自System.in的输入。Scanner类的方法方法描述nextByte()读取一个byte类型的整数nextShort()读取一个short类型的整数nextInt()读取一个int类型的整数nextLong()读取一个long类型的整数nextFloat()读取一个float类型的浮点数nextDouble()读取一个double类型的浮点数next()读取一个next类型的字符串nextLine()读取一行next类型字符串Java程序语句2.4语句控制台输入Java的输入需要依赖Scanner类,使用步骤如下:importjava.util.Scanner;
//第一步:引入java.util包中的Scanner类Scanners=newScanner(System.in);
//第二步:声明一个Scanner类的对象//第三步:next()方法系列指定输入的类型,nextInt():
输入整数
nextLine():输入字符串
nextDouble():输入双精度数Stringname=s.nextLine();intage=s.nextInt();doubleweight=s.nextDouble();s.close();
//第四步:关闭输入流Java程序语句2.4语句示例:计算两个整数累加和编写程序,从键盘输入两个整数,计算其累加和。importjava.util.Scanner;……Scannerinput=newScanner(System.in);System.out.println(“请输入一个整数:");num1=input.nextInt();……2.4语句练习2:数字加密器编写程序,类名为Encryption,实现一个数字加密器,加密规则是:加密结果=(整数*100+25)/24+3.1415926加密结果仍为一整数2.4语句练习3:分解数字从键盘上输入任意一个4位数字,分解出该数值的千位、百位、十位、个位。2.4语句单元2
Java编程基础2.3方法程序设计任务描述任务2.3计算货运车辆运费车辆管理系统中公司车辆运输费用的所涉及的运费单价不是固定,而是系统根据发货时间与使用车辆的型号,选择对应有效期内的运费费率单价,如表2-3-1所示。表2-3-1有限期内的运费费率表车型2T5T8T10T集装箱20'集装箱40'小车单价(元)14.875111.1132.53203800.56现运输车辆都在有效期内,选择不同车型,根据有效期内的当前运费单价与货运车辆的实际托运量,计算车辆运费。效果如图2-3-1所示。图2-3-1任务2.3的运行结果知识目标巩固分支语句的使用方法。熟悉方法的定义与使用。了解静态方法的定义与使用能力目标能熟练使用流程控制语句实现业务逻辑功能。能熟练使用方法实现功能模块化的设计。能定义无参数的静态方法。素养目标持之以恒,不断打磨专业能力的品质与工匠精神。创新思想的教育,激发创新意识。团队合作意识任务2.3计算货运车辆运费一个方法,通常是用来完成一项具体的功能(function),所以方法在其他语言也称为函数。多数编程语言中的方法有四大要素返回值类型方法名(参数列表){
//这里编写方法的主体}Java中方法的定义修饰符
返回值类型方法名(形式参数列表){
//这里编写方法的主体}方法的调用方法名()或者方法名(实际参数)说明:修饰符:public返回值类型:
整型int
浮点型double
无类型void相关知识2.3方法方法综合练习2.3方法练习1:编写一个方法,该方法接收两个整数作为参数,返回这两个整数中的最大值。练习2:定义两个同名方法(重载),分别计算圆形和矩形的面积。案例:设计一个查询图书的方法创建店员类Clerk,设计一个查询的方法search(),顾客咨询哪一类图书,店员就返回相关类型图书的名称。publicstaticvoidmain(String[]args)
{Scannersc=newScanner(System.in);System.out.print("1.计算机2.社会科学3.历史读物\n请选择图书类别:");intchoice=sc.nextInt();System.out.println("店员推荐:"+search(choice)+"。");}根据下列给出的代码,编写带参数的查询方法search()。2.3方法分析:1.定义的查询方法search(),该方法有返回值,返回的值是图书名称,即查询方法返回值类型是String类
。
2.查询方法带有一个整型的形式参数,用来接收键盘输入的choice值。3.使用switch分支语句,根据图书类别,返回推荐相关图书的名称。单元2
Java编程基础2.4数组与常用类程序设计任务描述任务2.4统计车辆运费货运公司在月末时,一般会统计当月车辆的运费费用。当月有效期内各类型车辆的运费费率如表2-3-1所示。根据运费费率单价与各类型车辆实际的托运量,分别计算各类型车辆的实际运费,累加计算出公司本月总运费。表2-3-1有限期内的运费费率表车型2T5T8T10T集装箱20'集装箱40'小车单价(元)14.875111.1132.53203800.56根据提供的ConvertMoney类,添加功能实现将车辆运费合计(小写)部分输出为大写,效果如图2-4-2所示。图2-4-2车辆运费统计知识目标熟悉一维数组的定义与使用。熟悉多维数组的定义与使用。熟悉Sting类的常用方法。熟悉Java包装类的基本用法。能力目标能够使用数组存储与处理算法逻辑中车辆相关数据。能灵活运用String类的方法解决实际问题。能熟练运用包装类与基本数据类型的转换。能熟练运用Date类获取系统日期。素养目标个体与集体,培养团结意识,共同发展和进步。人以类聚,物以群分,潜移默化灌输生活处事哲理。学会文档查阅,培养迁移学习的能力。任务2.4统计车辆运费String类字符串,顾名思义就是用字符连接成的字符序列。字符串常量用双引号括起来。在Java语言中是把字符串当作对象来处理的,可以通过java.lang包中String类创建字符串对象。
生活中的字符串
频繁使用的字符串
“有志者事竟成”“一日之计在于晨”
“态度决定一切”Strings="有志者事竟成";Strings=newString("有志者事竟成”);
创建字符串String类相关知识示例:String字符串的应用public
classCreateString{public
static
voidmain(String[]args){Stringa="时间就是金钱";//直接引用字符串常量System.out.println("a="+a);Stringb=newString(“我喜欢小肥羊火锅");//利用构造方法实例化Stringc=newString(b);//使用已有字符串变量实例化System.out.println("b="+b);System.out.println("c="+c);char[]charArray={'t','i','m','e'};Stringd=newString(charArray);//利用字符数组实例化System.out.println("d="+d);char[]charArray2={'时','间','就','是','金','钱'
};//提取字符数组部分内容,从下标为4的元素开始,截取2个字符Stringe=newString(charArray2,4,2);System.out.println("e="+e);}}String类String类的常用方法方法功能publicintlength()返回此字符串的长度publiccharcharAt(intindex)返回指定索引处的char值publicStringconcat(Stringstr)将当前字符串与str连接,返回连接后的字符串PublicbooleanisEmpty()判断字符串是否为空,如果length()为0,则返回true;否则返回falsepublicintcompareTo(Strings)比较两个字符串字典顺序,相等返回0,s大于当前字符串返回一个负值,s小于当前串返回一个正值publicbooleanequals(Objecto)比较两个字符串对象,相等则返回true;反之返回false。考虑大小写publicbooleanequalsIgnoreCase(Stringstr)比较两个字符串对象,相等则返回true;反之返回false。,不考虑大小写publicbooleanendsWith(Stringsuffix)测试此字符串是否以指定的后缀结束publicbooleanstartsWith(Stringprefix)测试此字符串是否以指定的前缀开始publicintindexOf(intch)搜索第一个出现的字符chpublicintindexOf(Stringvalue)搜索第一个出现的字符串valuepublicintlastIndexOf(intch)搜索最后一个出现的字符chpublicintlastIndexOf(Stringvalue)搜索最后一个出现的字符串valuepublicStringsubstring(intindex)提取从位置索引开始的字符串部分publicStringsubstring(intbeginindex,intendindex)提取beginindex和endindex之间的字符串部分publicStringtrim()返回一个前后不含任何空格的调用字符串的副本publicStringtoUpperCase()String中的所有字符都转换为大写publicStringtoLowerCase()使用默认语言环境的规则将此String中的所有字符都转换为小写publicStringsplit(charch)根据给定的分隔符对字符串进行拆分,返回一个字符数组String类String常用方法~提取字符串信息1.获取字符串长度Stringstr=newString(“态度决定一切”);intsize=str.length();System.out.println(字符串长度:”+size);2.获取指定位置的字符Stringstr=newString(“清明时节雨纷纷,路上行人欲断魂”);charch1=str.charAt(10);System.out.println(“字符串中索引位置为10的字符是:”+ch1);3.获取字符串索引位置(如果没有找到,则返回-1)Stringstr="yy@";intsize=str.indexOf(".");System.out.println("圆点字符在字符串中索引位置是:"+size);字符串中索引位置为10的字符是:行字符串长度是:6圆点字符在字符串中索引位置是:7String类4.获取字符数组String常用方法~提取字符串信息Stringstr="这是一个字符串";
//创建一个字符串char[]ch
=str.toCharArray();//将字符串转换成字符数组for(int
i=0;i<ch.length;i++){//遍历字符数组
System.out.println("数组第"
+i+"个元素为:"
+ch[i]);}5.判断子字符串是否存在Stringstr
="苏州有:姑苏区,吴中区,虎丘区,相城区,吴江区,工业园区";booleanrequest1=str.contains("吴中区");System.out.println("苏州有吴中区?"
+request1);booleanrequest2=str.contains("杨浦区");System.out.println("苏州有杨浦区?"
+request2);String类1.截取字符串String常用方法~字符串的操作2.字符串替换StringidNum
=;//模拟身份证字符串Stringyear
=idNum.substring(6,10);//截取年Stringmonth=idNum.substring(10,12);
//截取月Stringday=idNum.substring(12,14);//截取日System.out.print("出生日期为:"+year+"年"
+month+"月"
+day+"日");Stringstr
="登陆功能:用户输入用户名和密码之后,单击“登陆”按钮即可完成登陆操作。";Stringrestr=str.replace("陆","录");System.out.println("【更改前】"
+str);System.out.println("【更改后】"
+restr);String类3.字符串分割String常用方法~字符串的操作4.字符串大小写转换Stringstr="南京,无锡,苏州,杭州,上海";Stringdenal[]=str.split(",");for(inti=0;i<denal.length;i++){//遍历数组 System.out.println("索引"
+i+"的元素:"
+denal[i]);}Stringstr="abcDEF";//创建字符串System.out.println(str.toLowerCase());System.out.println(str.toUpperCase());String类5.去除字符串中空白内容String常用方法~字符串的操作6.判断子字符串是否相等Stringstr="eye";StringshortStr=str.trim();System.out.println("str的原值是:["
+str+"]");System.out.println("去掉首尾空白的值:["
+shortStr+"]");Stringstr1="Hello";//直接引用字符串常量Stringstr2=newString("Hello");//创建新字符串对象Stringstr3=newString("你好");//创建新字符串对象,但内容不同System.out.println("str1与str2比较的结果:"
+str1.equals(str2));System.out.println("str1与str3比较的结果:"
+str1.equals(str3));equalsIgnoreCase()方法解决比较时忽略大小写String类可变字符串StringBuffer类在实际开发中,我们经常需要对字符串的内容进行修改,使用String类型的效率不高(因为只能不断创建新的字符串对象并销毁旧的对象)。在这种情况下使用StringBuffer类型就比较合适。StringBuffer类型表示的是内容可以修改的Unicode编码字符序列。其创建后,所保存的字符串内容和长度均可以修改。StringBuffersbf3=newStringBuffer(32);创建一个对象,无初始值,即创建空字符串创建一个对象,初始值为aaa创建一个对象,初始容量为32的字符串缓冲区创建StringBuffer字符串,必须使用new关键字StringBuffersbf2=newStringBuffer(“aaa”);StringBuffersbf1=newStringBuffer();
创建StringBuffer字符串StringBuffer类StringBuffer类的常用方法StringBuffer常用方法StringBuffer常用方法中对字符串的运算操作,实际是对源字符串本身进行的,运算操作之后源字符串的值都发生了变化。方法功能publicStringBufferappend(typet)将任意数据类型的对象转换成字符串,然后追加到字符串序列中。publiccharsetCharAt(intindex,charch)设置给定索引处的字符修改为ch字符。publicStringBufferinsert(intoffset,Stringstr)将字符串插入到指定的索引值offset位置上。publicStringBufferdelete(intstart,intend)删除此序列中从指定索引start开始,一直到索引end处的子字符串StringtoString()返回缓冲区序列中数据的字符串表示形式StringBuffer类public
classStringBufferAppend{public
static
voidmain(String[]args){
//创建StringBuffer对象
StringBuffersbf=newStringBuffer("门前大桥下,");
sbf.append("游过一群鸭,");//追加字符串常量
//创建其他StringBuffer对象
StringBuffertmp=newStringBuffer("快来快来数一数,");
sbf.append(tmp);//追加StringBuffer对象
int
x
=24678;//创建整型变量
sbf.append(x);//追加整型变量System.out.println(sbf.toString());//输出}}1.为字符串追加不同类型的文字内容示例~append()方法应用StringBuffer类包装类在Java中本质上,存在两种数据类型,一种是基本数据类型(即包括int、double、float等8种原生态的数据类型),另外一种是引用类型--类(class)。为什么引入包装类由于基本数据类型不具有对象的特性。在Java中很多类的方法的参数类型都是对象,这些方法接受的参数都是对象,同时又需要这些方法来处理基本数据类型的数据。为了弥补基本数据类型在面向对象方面的欠缺,针对各种基本数据类型均提供了相应的引用数据类型,它们是在JDKAPI的java.lang包中定义的。
包装类包装类Java允许基本数据类型和封装类类型直接进行自动转换。如果一个基本数据类型值出现在需要对象的环境中,编译器会将基本数据类型的值进行自动装箱。如果一个对象出现在需要基本数据类型值的环境中,编译器会将对象进行自动拆箱。装箱:将基本数据类型的值转换为封装类对象的过程称为装箱(boxing)。拆箱:将封装类转换为基本数据类型的过程称为拆箱(unboxing)。例如:IntegerintObj=newInteger(10);//基本数据类型转换为包装类,装箱inttemp1=intOValue();//包装类转换为基本数据类型,拆箱inttemp2=20;intObj=temp2;//自动装箱intfoo=intObj;//自动拆箱
包装类包装类表1基本数据类型各自对应的包装类型基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean为了使基本数据类型的数据能像使用对象一样操作,则使用类来“包装“这些基本数据类型,使其成为对象。主要学习Integer。
包装类包装类Integer类的常用方法方法返回值功能描述byteValue()byte以byte类型返回该Integer的值intValue()int以int型返回此Integer对象shortValue()short以int型返回此Integer对象longValue()long以long型返回此Integer对象floatValue()float以float型返回此Integer对象doubleValue()double以double型返回此Integer对象valueOf(Ojectobj)Integer返回保存指定的String值的Integer对象parseInt(Stringstr)int返回包含在由str指定的字符串中的数字的等价数值,如“1010101”返回1010101parseInt(Stringstr,intradix)int实现将字符串按照参数radix指定的进制转换为int,如parseInt(1010,2)返回,将1010看做二进制返回十进制数10equals(ObjectIntegerObj)boolean比较此对象与指定对象是否相等toString()String返回一个表示该Integer值的String对象
包装类示例:基本数据类型与字符串的转换1.将字符串转换为int型数据public
classIntegerDemo{public
static
voidmain(String[]args){Stringstr=newString("123");int
num=Integer.parseInt(str);num++;System.out.println(“num="+num);
}}str是一个字符串对象,是不能给一个基本数据类型的变量i赋值,只能转换,通过调用的是Integer类的parseInt方法;
包装类示例:基本数据类型与字符串的转换2.将字符串转换为double型数据publicclassStringToDouble{publicstaticvoidmain(String[]args){Stringstr=“123.6”;//定义一个字符串,字符串中必须有数字组成。
doublenum=Double.parseDouble(str);//将字符串变为double型System.out.println(num);intx=100;str=x+"a";//任何类型与字符串相加之和都是字符串System.out.println(str);}}
包装类示例:基本数据类型与字符串的转换3.将字符串转换为boolean型数据publicclassStringToDouble{publicstaticvoidmain(String[]args){Stringstr="true";//定义一个字符串
booleanflag=Boolean.parseBoolean(str);if(flag){System.out.println("条件满足!");}else{System.out.println("条件不满足!");}}}
包装类示例:基本数据类型与字符串的转换4.将基本数据型数据转换为字符串publicclassBasicTypeToStr{publicstaticvoidmain(String[]args){intintValue=100;
Stringstr=String.valueOf(intValue);//int转换为StringSystem.out.println("str字符串的值是"
+str);doublePi=3.1415926;
str=String.valueOf(Pi);//double转换为StringSystem.out.println("str字符串的值是"
+str);}}
包装类Date类Date类的构造方法
publicDate():
使用这个获取系统当前的日期时间,精确到毫秒
publicDate(longtime):以自从标准基准时间(即1970年1月1日00:00:00GMT)以来的指定毫秒数Java中的java.util包中提供了Date类来操作日期和时间,使用Date类时需要先创建Date类对象。Date类的常用方法
publiclonggetTime():
获取自1970年1月1日00:00:00GMT开始到现在所表示的毫秒数
publicvoidsetTime(longtime):
设置当前Date对象所表示的日期时间值,该值用以表示1970年1月1日00:00:00GMT以后的time毫秒的时间点。Date类示例1~Date类1.获取基准时间到本地当前时间的毫秒数importjava.util.Date;public
classDateTest{public
static
voidmain(String[]args){Date=newDate();//创建现在的日期long
value=date.getTime();//获得毫秒数System.out.println("当前日期、时间:"
+date);System.out.println("从基准时间到当前时间所经过的毫秒数为:"
+value);}}如何将当前日期或者时间显示为“20220-3-12”或者“07:13:52”这样的格式呢?思考Date类DateFormat类Java的java.text包中提供了DateFormat类,DateFormat类的作用是按照指定格式对日期或者时间进行格式化。DateFormat类提供了4种默认的格式化风格,即SHORT,MEDIUM,LONG和FULL。其中:SHORT:完全为数字,如12.13.52或者3:30pmMEDIUM:较长,如Jan12,1952LONG:更长,如January12,1952或者3:30:32pmFULL:完全指定,如Tuesday、April12、1952AD或者3:30:42pmPSTDate类DateFormat类由于DateFormat类是抽象类,没有构造方法,需要使用DateFormat类的静态方法getDateInstance()创建DateFormat类对象。DateFormatdf=DateFormat.getDateInstance()Date类SimpleDateFormat类SimpleDateFormat类是DateFormat类的子类,是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。它允许格式化(日期->文本),解析(文本->日期)和规范化,日期和时间格式由日期和时间模式字符串指定。简单说就是将一个日期对象格式化成一个文本(字符串),也可以把一个日期字符串解析成一个日期对象。规则的定义:
y年
M月
d天
H时
m分
s秒
E星期几Date类SimpleDateFormat类publicSimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象publicSimpleDateFormat(Stringpattern):使用指定的模式(规则比如yyyy:MM:ddHH:mm:ss)publicStringformat(Datedate):把一个日期对象格式化成一个字符串publicDateparse(StringdateStr):把一个日期字符串解析成一个日期对象注意要以指定格式解析SimpleDateFormat类的构造方法SimpleDateFormat类的常用方法Date类示例:SimpleDateFormat类的应用importjava.text.DateFormat;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Locale;public
classDateFormatTest{public
static
voidmain(String[]args){Date=newDate();//创建日期DateFormatdf1=DateFormat.getInstance();//创建不同的日期格式DateFormatdf2=newSimpleDateFormat("yyyy-MM-ddhh:mm:ssEE");DateFormatdf3=newSimpleDateFormat("yyyy年MM月dd日hh时mm分ss秒EE",Locale.CHINA);DateFormatdf4=newSimpleDateFormat("yyyy-MM-ddhh:mm:ssEE",Locale.US);DateFormatdf5=newSimpleDateFormat("yyyy-MM-dd");DateFormatdf6=newSimpleDateFormat("yyyy年MM月dd日");//将日期按照不同格式进行输出System.out.println("-------将日期时间按照不同格式进行输出------");System.out.println("按照Java默认的日期格式:"
+df1.format(date));System.out.println("按照Java默认的日期格式:"
+df1.format(date));System.out.println("按照指定格式yyyy-MM-ddhh:mm:ssEE,系统默认区域:"
+df2.format(date));System.out.println("按照指定格式yyyy年MM月dd日hh时mm分ss秒EE,区域为中国:"
+df3.format(date));System.out.println("按照指定格式yyyy-MM-ddhh:mm:ssEE,区域为美国:"
+df4.format(date));System.out.println("按照指定格式yyyy-MM-dd:"+df5.format(date));System.out.println("按照指定格式yyyy年MM月dd日:"
+df6.format(date));}}Date类Calendar类Calendar是日历类,由于它是一个抽象类,不能直接创建对象。该类将所有可能用到的时间信息封装为静态成员变量,通过它的一个静态成员方法getInstance()来获取它的对象。Java中的java.util包中提供了Calendar类操作日期和时间。publicstaticCalendargetInstance() 使用默认时区和语言环境获得一个日历对象publicintget(intfield)获得给定日历字段对应的值,field通过Calendar提供的字段来取publicfinalvoidset(intyear,intmonth,intdate)设置日历时间年月日publicvoidadd(intfield,intamount)根据日历的规则,为给定的日历字段添加或减去指定的时间量Calendar类的常用方法Calendar类示例:Calendar类应用importjava.util.Calendar;importjava.util.Scanner;public
classCalendarDemo1{public
static
voidmain(String[]args){//如何获取任意年份的2月份有多少天Scannerscanner=newScanner(System.in);System.out.println("请输入年份:");
int
year=scanner.nextInt();
Calendarinstance=Calendar.getInstance();
instance.set(year,2,1);
instance.add(Calendar.DAY_OF_MONTH,-1);
int
i=instance.get(Calendar.DAY_OF_MONTH);System.out.println(i);
}}使用Calendar获得月份时,所获得月份是当前月份的上一个月,所以获取值要加1Calendar类单元2
Java编程基础2.2流程控制语句程序设计任务2.2选择货运车辆型号任务描述在车辆运费管理模块中,不同车辆型号的车辆规格、车辆容载量以及运费都不同,如表2-1所示。一般在管理模块中,选择车辆型号时,能自动显示车辆的所有描述信息。本单元任务就是使用分支结构与循环结构实现车辆类型的多次选择,并同时显示车辆的所有信息,如车辆规格和车载容载量,效果如图2.2所示。车辆型号2T5T8T10T集装箱20'集装箱40'小车车辆规格(米)4.2*1.6*1.86.8*2.4*2.47.6*2.4*2.49.6*2.4*2.45.8*2.4*2.412*2.4*2.4N/A车辆容载量(托)41012161020纸箱表2-1车辆型号相关信息图2.2任务2.2运行结果知识目标熟悉if语句的使用方法。熟悉switch语句的使用方法。熟悉while和do-while语句的使用方法。熟悉for语句的使用方法能力目标能使用if语句实现分支控制程序的设计。能使用switch语句实现多分支流程控制的设计。能熟练使用循环的方法实现各种算法。能熟练使用流程控制功能解决实际问题。素养目标养成认真、细心和严谨的作风与习惯养成良好的思维习惯勇于探索世界,培养学习主动性任务2.2选择货运车辆型号做任何事情都要遵循一定的规则。譬如,到图书馆借书,就必须要有借书证,并且借书证不能过期,这两个条件缺一不可。程序也是如此,需要利用流程控制实现与用户的交流,并根据用户的需求决定程序“做什么”,“怎么做”。流程控制能够控制程序的执行顺序。顺序结构分支结构(选择结构)循序结构程序的结构设计块(复合语句)块即复合语句,就是由一对大括号括起来的若干条简单的Java语句。相关知识2.2.1分支结构分支结构也称为选择结构,程序决定执行哪些语句是根据条件语句的布尔表达式值来执行不同的代码。if单分支语句if…else双分支语句if…elseif…else多分支语句Java提供了2种分支语句switch语句if语句if语句简单的if语句简单if语句,也称单分支if语句。只考虑条件为真时执行,其语法结构如下:true表达式语句1falseif语句执行流程图if(布尔表达式
){
语句块;}运算结果为boolean类型,其值为true时,执行花括号{}中的语句编码规范:缩进、换行编码规范:一条语句时,{}不省略2.2.1分支结构判断一个数是否是0~10之间的数字,如果满足,则输出显示“num介于0和10之间”数学方式的描述:num>=0并且num<=10布尔表达式的描述:
num>=0&&num<=10为true代码片段:if((num>=0)&&(num<=10)){System.out.println("num介于0和10之间"+num);}运算符的优先级:最高的优先级:小括号,即()最低的优先级:赋值运算符,即=优先级顺序:!>算术运算符>比较运算符>&&>||示例:判断输入数字是否在区间内2.2.1分支结构if…else语句if…else语句if-else语句也就是双分支if语句,是分支语句中常用的一种形式,针对某种条件有选择地做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。if…else语句执行流程图真表达式语句块1假语句块2if(布尔表达式){
语句块1;
}else{
语句块2;}布尔表达式的值为true时,执行语句块1;否则,执行语句块22.2.1分支结构示例:判断输入年份是否为闰年如果某一年可以被4整除而不能被100整除,或者可以被400整除,则这一年就是闰年。编写LeapYear类,从键盘上输入year值。数学方式的描述:year%4==0和year%100!=0或者year%400==0
布尔表达式的描述:
year%4==0
&&
year%100!=0||year%400==0
代码片段:if(year%4==0
&&
year%100!=0||year%400==0){System.out.println(year+"是闰年");}else{System.out.println(year+"不是闰年");}2.2.1分支结构由于if语句体或者else语句体可以是多条语句,所以如果需要在if…else里判断多个条件,可以“随意”嵌套。比较常见用是if…elseif…else语句。else的匹配原则:就近原则大括号优先if(表达式a){
语句1;}elseif(表达式b){
语句2;}elseif(表达式c){
语句3;}……else{
语句n;}布尔表达式a的值为true时,执行语句1布尔表达式b的值为true时,执行语句2if…elseif语句if…elseif…else语句2.2.1分支结构示例:显示学生成绩的等第输入学生Java成绩,根据等级划分,输出该学生的成绩评测等第。等级划分标准如下:成绩>=90:优秀成绩>=80:良好成绩>=60:中等成绩<60:不及格int
score=70;//考试成绩if(score>=90){
System.out.println("优秀");}
elseif(score>=80){
System.out.println("良好");}
elseif(score>=60){
System.out.println("中等");}
else{
System.out.println("不及格");}大于等于90分大于等于80分,小于90分大于等于60分,小于80分小于60分2.2.1分支结构switch(表达式){
case
表达式a:语句块1;break;case
表达式b:语句块2;break; ……default:语句块n}虽然嵌套的if语句可以实现多重选择处理,但语句较为复杂,容易将if与else配对错误,从而造成逻辑混乱。在这种情况下,使用switch语句来实现多重选择情况的处理。计算表达式的值如果等于表达式a值如果没有找到匹配的值如果等于表达式b值switch语句中表达式只能是整型、字符型或字符串String类型。关键字break是可选的。break语句终止整个switch语句。若break语句不存在,下一个case语句将被执行。switch语句switch语句也称为开关语句,根据变量或者表达式的值来执行不同语句。2.2.1分支结构示例:判断某月份属于哪个季节从控制台输入的某个月份,判断该月份属于春夏秋冬哪个季节。根据气温的划分:春季为3、4、5月份夏季为6、7、8月份秋季为9、10、11月份冬季为12、1、2月份switch(month){
case
3: case
4:
case5:System.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州电子商务职业学院《电气控制》2024-2025学年第二学期期末试卷
- 景区餐饮内部管理制度范本
- 机器试用内部管理制度
- 机电部门内部管理制度
- 林业系统内部控制制度
- 苏州卫生职业技术学院《空间数据库原理及应用》2024-2025学年第二学期期末试卷
- 检查与评价内部控制制度
- 天津开发区职业技术学院《审计沟通与职业判断》2024-2025学年第二学期期末试卷
- 民警内部选拔制度规定
- 济南合同内部控制制度
- 2026陕西君保融数字产业有限公司招聘(47人)考试备考试题及答案解析
- 广东事业单位考勤制度
- 工贸安全责任考核制度
- 设计院保密制度
- 《生活垃圾转运站除臭技术要求》(征求意见稿)
- 降级消费行业分析报告
- 产后康复体验活动开展
- 土方平衡调配方案
- 防御性驾驶安全培训课件
- 渔业法培训课件
- 2026年湖南铁道职业技术学院单招职业倾向性测试题库附答案
评论
0/150
提交评论