当前位置: 首页 > java >正文

java(三) -------------运算符、字符串、输入输出、大数值和数组

运算符

java中将带引号"  "的内容统一进行拼接

例如:System.out.println(5+2)  结果输出7,但是

           System.out.println(5+"2")  结果输出52 

当出现"by zero" 的报错时,表示出现了除数为零的情况

但浮点数除以0不回报错,但是会出现单词Infinity  表示无穷大

函数

Math可调方法

eg: Math.sqrt(4)  表示4的开平方,返回double 型数据

开根号公式

eg:根号21

系统内将21变成21.0000000000000000

先找到一个最大平方整数靠近但不大于21

21减去该整数的结果后缀两个0继续计算

要求(4*20+x)*x<500 求x的最大值

以此类推求出结果

Math.pow(5,2)  表示5的平方,同样返回double型数据结果

数值类型转换

小类型转换成大类型可直接转换,不会报错

eg:int a=short b

大类型转换成小类型要通过()强制转换

eg: short a=(int) b;

位运算(都是补码运算)

 计算机底层都是位运算,两层作用于一层

&  按位与   同1为1,底层作用图如下:

与运算常用于判断一个数据x的二进制从左往右是0还是1? 

|   按为或   同0为0

~  取反       1变0   0变1

^  异或        同0异1

异或常用于交换两个变量值

字符串

java中严格区分单引号和双引号,单引号表示字符,双引号表示字符串、

当有一个变量为字符串类型时,含该变量的加法一律视为字符串的拼接

方法:

           变量名.replace(要替换的内容,替换成的内容)             表示替换

                       split()                                                                 表示分割

                       indexOf(要判断的新字符串)                              用于判断是否为字符串的一个子串

                       如果是,返回第一次出现的下标,反之,返回      -1

                       substring(开始位置,结束位置)                        截取字符串(左闭右开,开始为0)

                       如果只输入一个数字,则默认开始位置,并输出该位置及以后的所有字符

不可变字符串:不能在原来存储字符串的地方直接进行修改

所有的字符串底层都是数组,长度不可二次改变

所以不可变字符串长度的改变是重新申请了新的数组

字符串的定义方式

1.String  变量名 ="字符串内容"

2.String  变量名 = new String  ("字符串内容")

两种定义方式的不同导致其存储地址不同

第一种字符串存储在字符串常量池中,当字符串内容相同时,多个变量指向同一个地址,共用该字符串

第二种字符串存储在堆中,无论前面是否有相同字符串都要开辟新的空间,因而内容相同的字符串地址不同

字符串是否相等

==   引用类型判断指向是否相同      基本类型判断值是否相同

equals    判断字符串是否相同

首先判断二者指向是否相同,指向相同则一定相同

指向不同则再依次比较字符串内容是否相同

null串和空串的区别

null串没有任何指向

空串会有指向,且指向内容为表示结束的 '\0' 符号

构建字符串

可变字符串:StringBuffer、StringBuilder

据前文可知,String为不可变字符串,每次拼接创建新的String对象

与String相比,StringBuffer和StringBuilder速度远高于String

StringBuffer:多线程安全  适合多线程  慢
StringBuilder:多线程不安全  适合单线程  快

方法:

获取时间戳:currentTimeMillis()   开始时间:1970.1.1

计算消耗时间:结束时间-开始时间

添加: append()

输入输出

输出:  System.out.println

输入:  System.in

Scanner xx= new Scanner(System.in)     获取可以扫描控制台的对象xx

通过该对象调方法,如:

xx.nextLine扫描控制台上输入的该行信息

   .next 扫描下一个单词

注:单独使用nextLine()没有问题

       但是前面有其他方法的时候,nextLine会多吃一次回车,即将换行符当作字符串录入信息

       空格也会被归为字符串的一种

       解决办法:提前in.nextLine()一次,吃掉空格

打印日期

大数值

java中提供BigInteger和BigDecimal分别计算大数值整型和浮点型

但是这两类不是真正的数,所以使用时需要new

不能直接用加减乘除等运算,需要调用方法

加:add()

减:subtract()

乘:multiply()

除:divide()

取余:mod()

……

 数组

for-each循环

变量x会依次代表数组中的每一项

for(int x:arr){}

遍历二维数组时,x会依次代表每一个一维数组

for(int[] x:arr){}

而如果想继续遍历一维数组中的变量可以使用嵌套循环

for(int[] x:arr){

        for(int z:x){}

}

数组的定义

1、可直接赋值定义

2、通过new声明并指定数组长度

3、声明的同时赋值,可以不指定长度,系统会按照赋值长度默认

数组的初始化:就是对数组的首次赋值

通过数组的初始化也可以声明匿名数组

数组拷贝(复制)

拷贝分为深拷贝和浅拷贝

浅拷贝:指向相同

深拷贝:自己开辟一块新的内存,把对方的值拷贝一份在自己的空间里

eg:

浅拷贝:int[] arr2=arr1;

深拷贝:int[] arr2=new int[arr1.length];

              for(int i=0;i<arr1.length;i++){
                   arr2[i]=arr1[i];

                   }

深拷贝的另一种方法:arr=Arrays.copyOf(arr1,arr2.length)

当arr2.length>arr1.length时,过量自动赋值为零;反之,取arr1中前arr2.length个值拷贝

命令行参数

即给主函数传参,如下图:

通过cmd执行这段代码

 先加入桌面

通过javac对该段代码进行手动编译

再通过java手动运行

再输入想要传的参数,main方法会接收到相应数据

数组排序

除了数据结构的八大排序以外,可以通过Arrays.sort(arr);进行数组自动排序

且默认从小到大

从大到小排序时,如果是基本类型数组,需要Integer类型对应的包装类,如下:

或者使用reverseOrder()实现倒序,即

Arrays.sort(arr2,Collections.reverseOrder())

字符串数组的排序

内存中字符串的排序按照ASCII码进行比较

先比较每个字符串的第一位   a最先z最后,以此类推

如果一个字符串包含多个信息,可指定通过某一信息进行比较,如:

一字符串数组里每个字符串都包含年龄、身高、姓名等,则可指定根据年龄进行排序

若是按年龄从高到低排序,应变为b.age-a.age 

http://www.xdnf.cn/news/2544.html

相关文章:

  • CoOAG:首个捕捉学术研究兴趣动态演变的数据集
  • SQL命令
  • 高频关键字、函数、容器、智能指针和算法例子
  • 深度学习新趋势:利用MLP取代卷积层——S2-MLPv2模型解析
  • EdgeOne 防盗刷实践教程
  • 19.TVS特性与使用注意事项
  • JAVA中的贪婪爬取和非贪婪爬取
  • C++:STL——list
  • PG-EXPLAIN基础
  • 稳扎稳打,25西电生命科学技术学院(考研录取情况)
  • HTML 的基本结构与简单文件编写方法
  • 【MobaXterm】win10下载v25.1安装流程
  • Java——封装(面向对象)
  • AI算力革命驱动光模块产业跃迁:800G规模化部署与1.6T技术竞速下的市场新纪元
  • RAGFlow解决Docker Compose include 报错问题
  • Android13增加一个systemservice,并允许APP访问
  • 开源财务软件:企业财务数字化转型的有力工具
  • 图片矫正模型
  • FPGA时钟设计
  • JavaScript之Webpack的模块加载机制
  • 【Linux网络与网络编程】13.五种 IO 模型
  • AIGC(生成式AI)试用 32 -- AI做软件程序测试 3
  • git提交规范记录,常见的提交类型及模板、示例
  • 【音视频】SDL简介
  • 算法题(135):唯一的雪花
  • 大数据系列 | 日志数据采集工具Logstash的架构分析及应用
  • 微信小程序导航栏
  • C++STL(九) :bitset的介绍与使用
  • MCP介绍与使用
  • 第二部分:网页的妆容 —— CSS(上)