已阅读5页,还剩75页未读, 继续免费阅读
Java语言程序设计-4-数学函数 字符 字符串.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计语言程序设计 海南大学信息科学技术海南大学信息科学技术学院学院海南大学信息科学技术海南大学信息科学技术学院学院 台安台安 第四章 数学函数、字符、字符串 学习目标 n学习和使用Math类中的常用数学函数 n学习字符类型的一些基本操作 n学习和使用String类型的一些基本操作 n学习字符串和数字间的转换 2 n学习字符串和数字间的转换 n学习和使用格式化控制台输出 目录 4.1 引言 4.2 Java常用数学函数 4.3 字符类型的操作 4.4 字符串类型的操作 3 4.5 从控制台读取字符串 4.6 从控制台读取字符 4.7 格式化控制台输出 4.1 引言4.1 引言 在第2章介绍了Java语言常用的一些数据类型在第2章介绍了Java语言常用的一些数据类型 Java 基本类型基本类型 数值类型数值类型 字符型字符型(char) 布尔型布尔型(boolean) 整数型整数型(byte、short、int、long) 浮点型浮点型(float、double) 4 Java 数据类型数据类型 布尔型布尔型(boolean) 引用类型引用类型 字符串字符串(String) 数组数组(array) 类类(class) 接口接口(interface) n本章将对本章将对数值类型数值类型、字符类型字符类型和和字符串类型字符串类型的常用方法进行介绍。的常用方法进行介绍。 4.2 Java常用数学函数 Java语言提供Math类(包含在Java.lang包中,隐式导入) Math类包含完成基本数学函数所需的方法。 n三类:三角函数方法、指数函数方法和服务方法。 n其中服务方法包含取整、求最小值、最大值、绝对值和 随机值 在Math类中定义了两个double型常量PI 和 E 5 在Math类中定义了两个double型常量:PI 和 E nPI就是的值,而E即e指数底的值,分别是: 3.141592653589793 和 2.718281828459045 n在程序中可以直接使用 Math.PI 和 Math.E 4.2.1 三角函数 方法方法返回值返回值描述描述 static double sin(double a) 返回a的三角正弦值static double sin(double a) 返回a的三角正弦值参数是弧度参数是弧度 static double cos(double a) 返回a的三角余弦值static double cos(double a) 返回a的三角余弦值参数是弧度参数是弧度 static double tan(double a) 返回a的三角正切值static double tan(double a) 返回a的三角正切值参数是弧度参数是弧度 static double asin(double a) 返回a的反三角正弦值参数是double,返回值范static double asin(double a) 返回a的反三角正弦值参数是double,返回值范 围在-/2 到/2 之间围在-/2 到/2 之间 Math类中常用的三角函数 6 static double acos(double a) 返回a的反三角余弦值参数是double,返回值范static double acos(double a) 返回a的反三角余弦值参数是double,返回值范 围在 0.0 到 之间围在 0.0 到 之间 static double atan(double a) 返回a的反三角正切值参数是double,返回值范static double atan(double a) 返回a的反三角正切值参数是double,返回值范 围在-/2 到/2 之间围在-/2 到/2 之间 static double toRadiansstatic double toRadians (double degree)(double degree) 返回弧度值返回弧度值参数是以度为单位的角参数是以度为单位的角 static double toDegrees static double toDegrees (double radians)(double radians) 返回度数值返回度数值参数是以弧度为单位的角参数是以弧度为单位的角 弧度与弧度制 弧度制:用弧度作单位来度量圆心角的制度 1弧度的角:等于半径长的圆弧所对的圆心角。 (即弧长等于半径的弧,其所对的圆心角为1弧度) 弧度制:是用弧的长度来度量圆心角的一种方法 弧度制的基本思想:使圆周长与圆半径具有同一的度量单 7 弧度制的基本思想:使圆周长与圆半径具有同一的度量单 位,然后用弧长与圆半径之比来度量角度。 ( 即 弧度 = 弧长 / 半径 ) 三角度数与弧度 圆的一周,弧度数:2r / r = 2 角度数:360度 则 2弧度 = 360度 所以:1度 = /180 弧度(1弧度约为57.3) 由圆心角计算弧长弧长 = nr/180( 为圆心角度数) 8 由圆心角计算弧长:弧长 = nr/180(n为圆心角度数) (即圆心角n所对应的弧长) 三角度数与弧度 示例 n1/4圆周的弧度为 ( 2r )/ r = /2, 半圆的弧度为 ( 2r ) / r = , n从而用、/2 分别表示半圆和1/4圆弧所对应的圆心 角(即180 和 90 ) 9 角(即180和 90) 常用值:常用值: 实例 指出下列表达式的值: Math.toDegrees(Math.PI/2) Math.toRadians(30) Math.sin(0) 90.0 0.5236(/6) 0.0 10 Math.sin(Math.PI/2) Math.cos(0) Math.cos(Math.PI/3) Math.asin(1) Math.acos(0.5) 1.0 1.0 0.5 1.5708 (/2) 1.0472 (/3) 4.2.2 指数函数 方法方法返回值返回值 static double exp(double a)static double exp(double a)返回e 的a 次方返回e 的a 次方 static double log(double a) static double log(double a) 返回a 的自然对数(底数是 e)返回a 的自然对数(底数是 e) static double log10(double a) static double log10(double a) 返回以返回以1010为底数的为底数的a a 的对数的对数 Math类中5个与指数函数有关的方法 11 static double log10(double a) static double log10(double a) 返回以返回以1010为底数的为底数的a a 的对数的对数 static double pow(double a, double b)返回a 的 b 次方static double pow(double a, double b)返回a 的 b 次方 static double sqrt(double a) static double sqrt(double a) 对于a=0 的数,返回 a 的正平对于a=0 的数,返回 a 的正平 方根方根 实例 指出下列表达式的值: Math.exp(1) Math.log(Math.E) Math.log10(10) 2.71828 1.0 1.0 12 Math.pow(2,3) Math.pow(3,2) Math.pow(4.5,2.5) Math.sqrt(4) Math.sqrt(10.5) 8.0 9.0 42.9567 2.0 3.24 4.2.3 取整函数 方法方法返回值返回值 static double ceil(double a)static double ceil(double a)a a向上取整向上取整为它最接近的整数,为它最接近的整数, 作为一个作为一个doubledouble值值返回返回 static double floor(double a)static double floor(double a)a a向下取整向下取整为它最接近的整数,为它最接近的整数, 作为一个double值返回作为一个double值返回 Math类包含5个取整方法 13 static double rint(double a)static double rint(double a)a取整为它a取整为它最接近的整数最接近的整数。如果a。如果a 与两个整数的距离相等,与两个整数的距离相等,偶偶数数的的 整数作为一个double值返回整数作为一个double值返回 static int round(float a) static int round(float a) 对a对a四舍五入四舍五入取整取整,返回,返回intint型的型的 整数整数 static long round(double a)static long round(double a)对a对a四舍五入四舍五入取整取整,返回,返回longlong型型 的整数的整数 实例 指出下列表达式的值: Math.ceil(2.1) Math.ceil(2.0) Math.ceil(-2.0) 3.0 2.0 -2.0 14 Math.ceil(-2.1) Math.floor(2.1) Math.floor(2.0) Math.floor(-2.0) Math.floor(-2.1) -2.0 2.0 2.0 -2.0 -3.0 实例(续) 指出下列表达式的值: Math.rint(2.1) Math.rint(-2.0) Math.rint(-2.1) Math.rint(2.5) Math.rint(4.5) 2.0 -2.0 -2.0 2.0 4.0 15 Math.rint(4.5) Math.rint(-2.5) Math.round(2.6f) Math.round(2.0) Math.round(-2.0f) Math.round(-2.6) Math.round(-2.4) 4.0 -2.0 3 2 -2 -3 -2 返回 int 返回 long 返回 int 返回 long 返回 long 4.2.4 最大值、最小值、绝对值 求最小值:Math.min( a , b ) na、b 可以是int 、long 、 float 或 double 类型 n返回值的类型为 a、b 的类型中较大的一个 求最大值:Math.max( a , b ) na、b 可以是int 、long 、float 或 double 类型 16 na、b 可以是int 、long 、float 或 double 类型 n返回值的类型为 a、b 的类型中较大的一个 求绝对值:Math.abs( a ) na 可以是int 、 long 、 float 或 double 类型 n返回值的类型与 a 的类型相同 实例 指出下列表达式的值: Math.max(2,3) Math.max(2.5,3) Math.min(2.5,4.6) 3 3.0 2.5 17 Math.abs(-2) Math.abs(-2.1) 2 2.1 4.2.5 随机值 语法:static double random( ) 语法:static double random( ) n返回区间0.0 ,1.0)内的一个double值返回区间0.0 ,1.0)内的一个double值 例如,获取0,10) (即0 9)的一个随机整数:例如,获取0,10) (即0 9)的一个随机整数: (int)( Math.random( )* 10 )(int)( Math.random( )* 10 ) 获取获取1111 55 55 之间之间的一个随机的一个随机整数整数: 18 获取获取1111 55 55 之间之间的一个随机的一个随机整数整数: (int)( 11 + Math.random( ) * 45 )(int)( 11 + Math.random( ) * 45 ) n获取区间a, b) 内的一个随机整数:获取区间a, b) 内的一个随机整数: (int)( a + Math.random( ) *(b - a) )(int)( a + Math.random( ) *(b - a) ) n获取区间 a b 之间的一个随机整数:获取区间 a b 之间的一个随机整数: (int)( a + Math.random( ) *(b (int)( a + Math.random( ) *(b a + 1) )a + 1) ) 小结 4.2 Java常用数学函数 n4.2.1 三角函数 n4.2.2 指数函数 n4.2.3 取整函数 n4.2.4 最大值、最小值、绝对值 19 4.2.4 最大值最小值绝对值 n4.2.5 随机值 练习题 指出下列表达式的值: Math.sqrt(4) Math.sin(0) Math.sin(Math.PI) Math.sin(2*Math.PI) Math.cos(2*Math.PI) 2.0 0.0 0.0 0.0 1.0 20 Math.cos(2*Math.PI) Math.cos(Math.PI/2) Math.pow(2,2) Math.log(Math.E) Math.exp(1) Math.max(2,Math.min(3,4) Math.rint(-2.5) Math.ceil(-2.5) 1.0 0.0 4.0 1.0 2.7 3 -2.0 -2.0 练习题(续) 指出下列表达式的值: Math.floor(-2.5) Math.round(-2.5f) Math.round(-2.5) Math.rint(2.5) -3.0 -2 -2 2.0 int long 21 Math.rint(2.5) Math.ceil(2.5) Math.floor(2.5) Math.round(2.5f) Math.round(2.5) Math.round(Math.abs(-2.5) 2.0 3.0 2.0 3 3 3 int long long 练习题(续) 编写一条语句,将47转换为弧度值,并将结果赋 给一个变量 编写一条语句将/7转换为角度值并将结果赋 double d1 = Math.toRadians(47); 22 编写一条语句,将/7转换为角度值,并将结果赋 给一个变量 double d2 = Math.toDegrees(Math.PI/7); 练习题(续) 编写一个表达式,返回3455的一个随机整数。 (int)(34 + Math.random() * 22) (int)(0 + Math.random() * 1000) 编写一个表达式,返回0999的一个随机整数。 23 (int)(0 + Math.random() * 1000) 编写一个表达式,返回5.555.5的一个随机整数。 (int)(5.5 + Math.random() * 51) 目录 4.1 引言 4.2 Java常用数学函数 4.3 字符类型的操作 4.4 字符串类型的操作 24 4.5 从控制台读取字符串 4.6 从控制台读取字符 4.7 格式化控制台输出 4.3 字符类型的操作 4.3.1 字符类型回顾 4.3.2 字符类型与数值类型的转换 4.3.3 字符类型的运算 4.3.4 字符的比较和测试 25 4.3.1 字符类型回顾 字符类型char用来表示单个字符 字符型直接量使用单引号括起来,如 a、b、c、 0、1等 注意注意:双双引引号括起来号括起来的是字符串。的是字符串。A 和和 A是是不同不同的的! char letter = A; / ASCII char number = 4; / ASCII 26 char number = 4; / ASCII char类型数据在计算机内部是用二进制形式的编码 存储的 通常计算机采用ASCII码(8位编码),Java支持 Unicode编码(16位编码) ASCII码 ASCII码(美国标准信息交换码),表示所有大写英 文字母、小写英文字母、标点符、控制符 8位编码,能表示128个字符 ASCII字符集(十六进制) 27 例如,例如, 0的编码是的编码是0 x30,即,即48 A的编码是的编码是0 x41,即,即65 a的编码是的编码是0 x61, 即, 即97 数字字符:数字字符:4857 大写字母:大写字母:6590 小写字母:小写字母:97122 Unicode编码 Unicode 编码 n由统一码协会建立的一种16位编码方案,支持世界不同语言 的文本交换、处理和显示。 n一个统一码占两个字节,书写上用以u开头的4位十六进制数 表示, n范围从 u0000 到 uFFFF,共65536个 28 n包括ASCII码(从u0000到u007F对应的128个字符) 实例 字符类型使用单引号括起来 char letter = A; / ASCII char number = 4; / ASCII char unicodeLetter = u0041; / Unicode(P105) char unicodeNumber = u0034; / Unicode char cnChar1 = 中中; / Unicode 等价于字符等价于字符 A 29 cnChar1 = ; / Unicode char cnChar2 = 国国; / Unicode 等价于字符等价于字符 3 特殊字符的转义序列 如果要输出下面信息,该如何做? nThis is a table 下面的语句是错误的: nSystem.out.println( This is a table ); Java语言定义一种“转义字符”:反斜杠 30 nJava语言用反斜杠来表示一些特殊字符 n例如: System.out.println( This is a table ); 表示符号表示符号本身本身 输出:输出:This is a table 4.3.2 字符类型与数值类型的转换 字符类型可以转换成任意的数值类型 n隐式转换(当转换结果使用于目标变量) lbyte x = a; / a的的Unicode码码是是97,在,在byte和和int范围范围内内 lint y = a; / x、y 的值的值均均为为97 n显式转换(即强制转换,当转换结果不适于目标变量时) lbyte x = u0101; /不不正正确确, 0101的的Unicode码超出码超出byte的范围的范围 byte y = (byte) u0101; 31 lbyte y = (byte) u0101; /正正确确,截截取取低低8位,位,即即0 x01,y的值为整数的值为整数1 任意的数值类型可以转换成字符类型 n隐式转换(当转换结果适于char类型时) lchar ch1 = 97; / ch1的值为的值为A lchar ch2 = 0 x41; / ch2的值为的值为A n显式转换(即强制转换,当类型不匹配或数值超出char类型的范围时) lchar x = (char)50.25; /正正确确,截截取整数值取整数值50,x的值为字符的值为字符 2 lchar y = (char)0 xF0041;/正正确确,截截取取低低16位,位,y的值为字符的值为字符 A 4.3.3 字符类型的运算 所有数值操作符都适用于字符类型的数据 n与数值或字符运算,字符型数据会自动转换成数值(ASCII码) int x = a; / x的值为整数的值为整数97 int y = x + 2; / y的值为整数的值为整数99(97+2) n与字符串+运算时,字符型数据会与字符串连接 int z = x + 0; 思考思考:z的值的值?z的值为整数的值为整数145(97+48) 32 char letter = A; / A: 65(ASCII码码) System.out.println(letter+); System.out.println(letter); n增量和减量运算也可以用于字符型变量,得到后一个或前一 个Unicode字符,如: A B n与字符串+运算时,字符型数据会与字符串连接 Sytem.out.println(Chapter + 2); /输出输出 Chapter 2 4.3.4 字符的比较和测试 字符间的比较可以使用关系运算符 按字符的ASCII码进行比较 试比较下列字符的大小:试比较下列字符的大小: 1)a 与与 b 2)0 与与 a 结果结果: 1)a b true 2)0 a true 33 2)0 与与 a 3)A 与与 a 2)0 pareTo(str4) 0);); System.out.println(System.out.println(120.compareTo(58) 0120.compareTo(58) 0); ); System.out.println(System.out.println(120.compareTo(ab) 0120.compareTo(ab) 0);); System.out.println(System.out.println(120.compareTo(ab)120.compareTo(ab); ); 注:注:String 类的类的 compareToIgnoreCase 方法,执行的是不区分大小写的比较方法,执行的是不区分大小写的比较 0 false false false true - 48 System.out.println(System.out.println(pareToIgnoreCase(str3)pareToIgnoreCase(str3) = = 0 0););true 字符串比较(续)(判断包含) boolean startsWith(String s1) n如果字符串以s1作为前缀开始,返回true boolean endsWith(String s1) n如果字符串以s1作为后缀结束,返回true boolean contains(String s1) 如果字符串包含s1返回 54 n如果字符串包含s1,返回true 实例 String s = Welcome to Java; 输出?输出? System.out.println( s. startsWith(We) ); System.out.println( s. startsWith(we) ); true false 55 System.out.println( s. endsWith(va) ); System.out.println( s. endsWith(Jav) ); System.out.println( s. contains(to) ); System.out.println( s. contains(To) ); true false true false 实例 编写程序,输入两个城市名称,按字母顺序从小到大输出 import java.util.Scanner; public class OrderTwoCities public static void main(String args) Scanner input = new Scanner(System.in); System.out.print(Enter the first city: ); String city1 = input.nextLine(); System.out.print(Enter the second city: ); 读读取一整行取一整行 56 System.out.print(Enter the second city: ); String city2 = input.nextLine(); if ( pareTo(city2) = A else if (Character.isDigit(ch) value = ch - 0; else System.out.println(ch + is an invalid input); System.exit(1); /退退出出程序的程序的执执行行 System.out.println(hex: + ch + , digit: + value); 目录 4.1 引言 4.2 Java常用数学函数 4.3 字符类型的操作 4.4 字符串类型的操作 72 4.5 从控制台读取字符串 4.6 从控制台读取字符 4.7 格式化控制台输出 前面例子中使用 Syetem.out.print() 或 System.out.println()输出 4.7 格式化控制台输出(P123) 不不足足: n输出输出多多个值个值时时只能只能转换转换为一个字符串为一个字符串 n无无法法按按指定指定类型类型输出输出 n无无法法指定输出指定输出宽宽度和度和小小数位数数位数 73 在控制台格式化输出可以使用System.out.printf() n无无法法指定输出指定输出宽宽度和度和小小数位数数位数 优点优点: n可可以以同时输出同时输出多多个值,个值,不不必必类型类型转换转换 n可可以以按按指定指定类型类型输出输出 n可可以以指定输出指定输出宽宽度和度和小小数位数数位数 n可可以设以设置置对对齐齐方方式 等式 等 例: 根据秒数计算小时和分钟 public class ConvertSeconds /* main method */ public static void main(String args) int totalSeconds = 100000; /将将要要计计算算的的妙妙数数(也也可可从键盘从键盘输入输入) int totalMinutes = totalSeconds / 60; /总总分分钟钟数数 int totalHours = totalMinutes / 60; /总总小时小时数数 int hours = totalHours % 24; /当前当前小时小时 74 int hours = totalHours % 24; /当前当前小时小时 int minutes = totalMinutes % 60; /当前当前分分钟钟 int seconds = totalSeconds % 60; /当前秒当前秒 / 输出输出方法一:方法一: System.out.println(totalSeconds + = + hours + : + minutes + : + seconds); / 输出输出方法方法二二: System.out.printf(%d = %d:%d:%dn, totalSeconds, hours, minutes, seconds); 100000 = 3:46:40 100000 = 3:46:40格式化字符串格式化字符串 格式化控制台输出(P124) 格格式式化化符符号号含义含义 %d输出十进制整数 %f输出浮点数 %c输出字符 System.out.printf( 格格式式化化字符串字符串 , 输出输出目标目标1 , 输出输出目标目标2,. , 输出输出目标目标n) 75 输出字符 %s输出字符串 %o输出八进制整数 %x输出十六进制整数 %#x输出带有十六进制标志的整数 %m,nfm表示输出的宽度,n表示小数点后的位数 格格式式符符控制控制对对应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 收到贵司寄来的违约金通知函请速处理8篇
- 市场调研活动安排的协调函4篇
- 关于申请申请的确认函8篇
- 申请2026年新增办公场地确认函7篇
- 云南德宏芒市 2026 口岸综合岗公务员招录考试试卷 招聘 2 人
- 2026年培训课程反馈意见收集确认函(8篇范文)
- 2026中国智能物流机器人市场渗透率及增长空间研究报告
- 2026年铁路线路巡检员岗位技能测试题(附答案)
- 2025年安全评价师职业资格考试(二级)能力提高训练试题库及答案
- 2026年钢结构检测人员理论全真模拟题及答案详解
- 2025~2026学年七年级上学期第一次月考数学试卷2【附解析】
- 河南省郑州市实验中学2026-2027学年高二上学期第一次月考英语试卷
- 加入保险行业的十五大理由
- 酮症酸中毒指南2025版
- 社区公文写作格式和范文(15篇)
- 10kV配电站房建设施工方案
- 检验科试剂耗材精细化管理方案
- 物业维修管理流程及注意事项
- 2026年河南省高考物理试卷(含答案及解析)
- TAVR麻醉管理策略
- QASME ANSI B16.34-2020 法兰、螺纹和焊接端连接阀门
评论
0/150
提交评论