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

Java基础04

目录

一、Java中的语句判断

二、位运算

①a&b(和:都是1才为1,其他情况都是0)

②a|b(或:有一个1就是1,都是0才为0)

③a^b(异或:不同为1,相同为0)

④~a(非:1变0,0变1,符号位也会改变)

三、位运算

四、移位运算--比乘法更快

①移位

②溢出

③移位规则

五、字符串

六、⭐不可变字符串⭐

七⭐

九、equals()方法

十、输入.输出


一、Java中的语句判断

import java.lang.Math.*;
public class Java{public static void main(String[] args) {int a=9;int b=12;int c=a>b?23:11;  //Java中的语句判断(判断a是否大于b,大于则被赋值':'前的数据)char d=a==9?'w':'k';float e=a+b>18?23.45F:11.9F;System.out.println(c);System.out.println(d);System.out.println(e);}
}

二、位运算

初始值:

a=43=32+8+2+1=101011

b=19=16+2+1=10011

①a&b(和:都是1才为1,其他情况都是0)

②a|b(或:有一个1就是1,都是0才为0)

③a^b(异或:不同为1,相同为0)

④~a(非:1变0,0变1,符号位也会改变)

所以得出结果是-44

CPU的高低电压输出是没有智力的,就是靠上述四种基础电路,来实现不同电压的改变和输出,去实现更加智能的功能。

三、位运算

计算机中的加减乘除的底层都是位运算

位运算涉及一些算法,&和^

e.g 判断x的二进制位从右往左第m位是0还是1

(得到结果0)则说明这一位是0;

让x去&运算第m位的数,即2的(m-1)次方

如果是这种情况(得到自己本身):

则证明这一位是1。

^两变量交换值,不依赖第三个变量(根据异或的本质,能通过两个数推理出第三个数)

四、移位运算--比乘法更快

①移位

(任何二进制都能像137一样拆开移位)

(其他进制操作相同)

N进制数左移M位:原数乘N^M

N进制数右移M位:原数乘N^(-M)

int a=7;
a=a<<3;   //左移m位,乘2^m,结果=56
a=a>>2;    //右移m位,乘2^(-m),结果是14

如下,即便是万亿级别的数据乘法,运算也只有几次,运算只在一瞬间:

②溢出

移位操作就会涉及溢出,即超范围计算(具体体现e.g 一个数在左移过程中出现负数情况)

③移位规则

左移操作中,在后面补0;

右移操作中,符号位是1,补位就是1;符号位是0,补位就是0

【注:】移位运算符的右移操作要完成模32的运算(除非左操作数是long类型,在这种情况下,需要对右操作数模64),例如:1<<35的值等同于1<<3即值8。

五、字符串

String x="dewcusohdeubcuhc"; //char[]
x=x+233;  //字符串拼接数字直接加
x=x+"sdj"; //字符串拼接字符串,加引号直接加

一些方法:

    String s1="aavvssdsfkskskk-----###13424";String s2=s1.replace("k","mm");//替换String[] arr=s1.split("s"); //分割String s3="dddkkk";  int index=s1.indexOf(s3);   //查找位置System.out.println(s1.equals(s2));//⭐equals()是比较数据是否相等最稳妥的办法⭐//=========================================================String s1="asdaficidbifwufbe"; char m1=s1.charAt(4);  //初始为0,这里表示获取第5个位置的字符System.out.println(m1); int m2=s1.codePointAt(4); //获取字符的编码值System.out.println(m2); int m3=m1;System.out.println(m3); //可以直接通过打印int的方法来获取编码

六、⭐不可变字符串⭐

字符串不可变意味着不能在原地址发生改变。

在高级语言中,越界访问是非法的,会被拦截,所以意味着,申请多少空间就无法改变。

七⭐

因为字符串的使用规格太大了,所以运用"#:"z注释中这种机制:

 String s1="aaa";String s2="aaa"; //#:因为已经有"aaa"资源,所以后续再创建,只是将地址指向已经创建的资源 boolean x=s1==s2; //比较s1和s2的指向是否相同(指针)System.out.println(x);

如下:

八、⭐常量池⭐

Java中有垃圾自动回收机制,即没有指针指向的一块地址会被Java自动识别检测后进行回收,不止Java,很多其他高级语言都有自动回收机制。(C语言中的回收则需要人为手动处理)

但是为了节约时间,没有指针指向的字符串在常量池中的内容不会被回收,以便于有后续字符串申请空间存储相同内容时,可以直接用(详细常量值概念请看这篇文章-->一篇帮你搞懂Java常量池-CSDN博客)。

九、equals()方法

作用:

a.每个类都有这种方法,都是集成Object,默认和==一样比较指向是否相同

b.字符串中对这个方法进行了重写,仅比较值

c.重写equals还需要重写hashcode(),因为hashmap的使用需要这两个方法配合

d.面试题还会问如何打配合,hashmap存放数据原理

十、输入.输出

详细可见这篇文章-->一篇帮你搞懂Java输入-CSDN博客


http://www.mrgr.cn/news/60042.html

相关文章:

  • springboot连接两个数据源,来回切换数据不能保存? 换事务
  • <项目代码>YOLOv8路面垃圾识别<目标检测>
  • vuex使用modules模块化
  • 如何对群辉docker进行简单更新升级
  • Git_GitLab
  • 不同类型的 LED 驱动电源在检测方法上有哪些不同?-纳米软件
  • 【音视频 | ADPCM】音频编码ADPCM详细介绍及例子
  • PCL库中的算法封装详解
  • springmvc请求源码流程解析(二)
  • Java语言-异常
  • 查找与排序-插入排序
  • golang中的goroutine
  • OD机试真题-单词接龙
  • (7) cuda异常处理
  • 关于科学计算法 二进制 十进制 16进制 8进制的换算
  • RN的 Button 组件没有 style 属性
  • 微调大模型-4-合并基座模型
  • Supabase:当开源遇上实时数据库服务
  • 进程间通信初识:管道
  • Atlas800昇腾服务器(型号:3000)—SwinTransformer等NPU推理【图像分类】(九)
  • 计算结构体及其中元素的大小
  • Semantic Kernel进阶:创建和管理聊天(ChatCompletion)历史记录对象(四)
  • Linux:认识文件
  • PCL 基于法向量夹角提出错误匹配点对
  • shodan4,挂黑网站查找,弱口令网站搜索
  • 图---java---黑马