Java基础自学笔记——第四章:数学函数、字符、字符串

第四章:数学函数、字符、字符串

一.常用的数学函数

1.三角函数

方法描述
sin(radians)弧度->正弦函数值
cos(radians)弧度->余弦函数值
tan(radians)弧度->正切函数值
toRadians(degree)角度->弧度
toDegrees(radians)弧度->角度
asin(a)数值->反正弦函数值
acos(a)数值->反余弦函数值
atan(a)数值->反正切函数值
double sin=Math.sin(Math.PI/2);//1.0
//cos、tan同理
double radians = Math.toRadians(30);//0.5235987755982988

double degree=Math.toDegrees(Math.PI/4);//45.0
double radians=Math.asin(1.0);//1.5707963267948966
//acos、atan同理

2.指数函数

方法描述
log(x)以e为底的对数
exp(x)e的x次方
log10(x)以10为底的对数
pow(a,b)a的b次方
sqrt(x)x的平方根(x>=0)
double x = Math.log(Math.pow(Math.E, 2));//2.0 其中Math.E为e
double y=Math.exp(2);//7.38905609893065
double z=Math.log10(1000);//3.0
double s=Math.sqrt(4);//2.0

二.服务方法

1.取整方法

方法描述
ceil(x)向上取整
floor(x)向下取整
rint(x)x取整为它最接近的整数,如果x与两个整数的距离相等,偶数的整数作为一个双精度值返回
round(x)如果x是单精度数,返回(int)(Math.floor(x+0.5);如果x是双精度,返回(long)(Math.floor(x+0.5)
Math.ceil(3.1);//4.0
Math.ceil(-3.1);//-3.0

Math.floor(3.9);//3.0
Math.floor(-3.1);//-4.0

Math.rint(3.1);//3.0
Math.rint(3.5);//4.0
Math.rint(2.5);//2.0
Math.rint(-2.5);//-2.0
Math.rint(-3.5);//-3.0

Math.round(-2.6)//-3  long型
Math.round(2.4)//2  long型
Math.round(2.4f)//2 int型
Math.round(-2.4f)//-2  int型

[个人总结]

  • ceil和floor方法可以想象成一个一维坐标轴
  • 使用rint方法时,当x与两个整数距离相等时,奇数进位,偶数不进位,负数一样。
  • 使用round方法时,单精度返回int型,双精度返回long型,都是加0.5,然后向下取整。

2.min、max、abs方法
服务数据类型:int,long,float,double
返回最小值、最大值、绝对值

3.random方法
random方法在上一章中有讲解,在此不做过多赘述。

三.字符数据类型和操作

1.Unicode码

  • 16位,两个字节
  • \u开头的4位16进制数表示
  • 范围:\u0000-\uFFFF
字符十进制Unicode
‘0’-‘9’48-57\u0030-\u0039
‘A’-‘Z’65-90\u0041-\u005A
‘a’-‘z’97-122\u0061-\u007A

2.自增和自减可以用在char字符上

char ch='b';
++ch;//'c'

char ch2='b';
--ch2;//'a'

int x=ch-ch2;//2

3.常用转换

  • 浮点型->char型
char ch=(char)65.9;//'A'
//转换过程:先将65.9转换为int型:65,在转换为char型'A'
  • 0-FFFF的任何一个十六进制数可以隐式转换为char型,不在此范围需显示转换
char ch=0x0041;//'A'
  • 如果另一个操作符是字符或数字,则自动转换为数字,若为字符串则相连
int i='2'+'3';
System.out.println("i is "+i);//i is 101

4.特殊字符的转义序列

  • \b:退格键
  • \f:换页符
  • \r:回车键

5.字符常用方法
由于Character类中方法为静态方法,故无需创建实例调用,静态方法建议直接用类名调用。

Character.isDigit('5');//true      是否为数字
Character.isLetter('5');//false    是否为字母
          isLetterOrDigit(ch);//         数字或字母
          isLowerCase(ch);//             小写字母
          isUpperCase(ch);//             大写字母
          toLowerCase('A');//'a'    转为小写
          toUpperCase('a');//'A'

【补充 2002301】
一个字符占几个字节
可以通过 字符串.getBytes(编码格式).length 来获取

 		String china = "中";
        byte[] bytes = china.getBytes(StandardCharsets.UTF_8);
        System.out.println(bytes.length);

四.String类型

1.String 类型不是基本数据类型,是引用类型

String message="Java Is Fun";
//message引用了一个内容为Java Is Fun的字符串对象

由于String中的方法只能有一个特定的字符串实例来调用,故又称为实例方法,非实例方法称为静态方法。

2.String 对象的简单方法

String str="welcome";
str.length();//7                   字符串长度
str.charAt(3);//c                  返回指定下标的字符,下标从0开始
str.concat("hello")//welcomehello  连接字符串,也可以使用+连接
str.toUppercase();//WELCOME        返回全大写
str.toLowerCase();//welcome        返回全小写

String str2="welcome to    ".trim();
System.out.println(str.length());//10   去掉两边空格          

[注意] java允许在不创建新变量的情况下,使用字符串直接量引用字符串。

"Welcome to java".length();//15
"".length()//0

3.从控制台读取字符串

[注意] next()方法和nextLine()方法的区别在于next()方法以空白结束(‘ ’、‘\t’、‘\f’、‘\r’、‘\n’);nextLine()方法读取一整行文本,以回车键为结束标志。
next()方法的特点
从控制台获取字符没有专门的方法,只能通过如下方法:

String x=in.nextLine();//读取一条字符串
char ch=x.charAt(0);//取第一个字符

4.String对象的比较方法

String str="welcome";
String str2="welcome";
String str3="hello";
str.equals(str2);//true 字符串内容是否相等,==比较的是是否指向同一个对象
str.equalsIgnoreCase(str2);//true 不区分大小写比较
str.compareTo(str3);//15  比较第一个不相同的字母,返回一个大于0,=0,<0的整数,此例中w比h大15,所以返回正15
str.compareToIgnoreCase(str2);//15  比较不区分大小写,比较规则与上例中相同
str.startsWith("wo");//false   是否以wo开头
str.endsWith("me");//true   是否以me结尾 
str.contains(str2);//true   是否包含str2子串  

5.获得子字符串

String str="welcome to java";
str.substring(3);//come to java   从开始下标到结束
str.substring(3,6);//com   从开始下标到结束下标-1,注意:不包含结束下标
str.indexOf('c');//3   返回字符或字符串下标
str.indexOf('a',4)//12   从下标4之后第一个出现的字符或字符串
str.lastIndexOf('a');//14   最后一个出现的字符或字符串下标
str.lastIndexOf('a',13);//12   从下标13之前出现的最后一个'a'   

[注意] indexOf(str,fromindex)中从fromindex之后查找
lastIndexOf(str,fromindex)中从fromindex之前查找

6.字符串与数字间的转换

String str="123";
int x=Integer.parseInt(str);//123   转为int类型
double y=Double.parseDouble(str);//123   转为double型
……

String str2=123+"welcome";//123welcome

【补充 20220217】
1.replace和replaceAll的区别
在这里插入图片描述
replace可以整体替换字符和字符串
replaceAll可以根据正则规则进行替换
2.Pattern和Matcher比较正则

        // 要验证的链接
        String link = "www.baidu.xom";
        // 链接正则表达式
        String regEx = "www.*";
        // 编译正则表达式 忽略大小写的方法:Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
        Pattern compile = Pattern.compile(regEx);
        Matcher matcher = compile.matcher(link);
        // 链接中是否有匹配的正则链接字符串
        boolean b = matcher.find();
        System.out.println(b);

五.格式化输出

1.语法:printf(formate,item1,item2……)
格式化输出
2.格式标识符

格式标识符描述
%b布尔值
%c字符
%d十进制
%f浮点数
%e标准科学计数法
%s字符串
System.out.printf("%5c",'c');//    c   c前有四个空格
System.out.printf("%6b",true);//  true    true前加两个空格
System.out.printf("%5.3f",3.1415926);//3.142   保留三位小数,并共占5位的空间

[注意]

  • 如果一个条目需要比指定宽度更多的空间,宽度自动增加
  • 默认情况下为右对齐,可添加负号实现左对齐

[补充]2020-04-26
在jdk1.8中String添加新方法:String.join()
语法:String.join(“分隔符”,“字符串数组/集合”)

        //获取所有bean对象如下:
        for(String beanObject:ac.getBeanDefinitionNames()){
            //获取每个beanObject的别名
            String[] beanName=ac.getAliases(beanObject);
            //打印每个bean对象名称和他的别名   String.join()方法:将字符串数组用特定字符进行连接
            //String.join("特定字符","字符串数组")
            System.out.println(String.format("beanObject:%s,别名:[%s]",beanObject,String.join(",",beanName)));
            //beanObject:helloWord,别名:[helloWorld_2,helloWord_1,he]       
           }

【补充 20220217】
在这里插入图片描述
作用:与指定字符串进行连接,返回新字符串
第二个参数可以传递字符串数组和实现Iterator接口的类
之所以可以传递字符串数组的原因是可以传可变参数的实现CharSequence接口的类,所以数组元素必须是实现了CharSequence接口的类

七.总结

通过第四章的学习,我学习到了常用的数学函数和服务方法,服务方法中的取整方法可能有点绕,小伙伴要多留意哦,我还学会了处理字符和字符串的方法,格式化输出对今后的练习非常有帮助,总之,收获很大,希望小伙伴也是!前四章为基础中的基础,下一章我们将接触到循环,基础中的入门,跟紧步伐!

加油!第五章待更……

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值