首页 > 编程语言 >自学java第二天

自学java第二天

时间:2024-07-25 22:56:22浏览次数:20  
标签:java String int 补码 System 第二天 println 自学 public

String类型的基本使用

String是引用数据类型,变量定义的格式为:String 变量名 = "";

""中的内容可以是任意的,叫做字符串,与char不同,char类型叫做字符,里面只能有一个内容。

String的运算规则,在和基本数据类型进行运算时,会进行拼接的操作。

例如:

public class index {
    public static void main(String[] args) {
        String name = "小飞";
        int age = 18;
        //输出结果为小飞18
        System.out.println(name + age);
    }
}

 注意:

public class index {
    public static void main(String[] args) {
        String name = "小飞";
        int a = 10;
        char b = 'a';
        //输出结果为107小飞
        System.out.println(a + b + name);
        //输出为小飞10a
        System.out.println(name + a + b);
    }
}

有String类型参与运算时才会进行拼接。

进制的理解

二进制转换十进制

二进制:以0b或者0B开头0,1组成       例如:0b0111

八进制:以0开头 0-7组成                     例如:076

十六进制:以0x或者0X开头0-10,a-f组成 (不区分大小写) 例如:0x1A

进制之间的转换这里只列举一个,二进制转换为十进制,我们以byte为例,占用1个字节,1个字节占用8个bit位,

从左往右第一位叫做符号位,0正1负,其余的才是数据。

例如:

00000011

这个二进制表示的数据转换为十进制为3

因为:1*2^0 + 1*2^1 = 1 + 2= 3,因为符号为是0所以是正整即为3.

10000011

因为符号为为1,即结果为-3.

原码反码补码

正数的原码反码补码,三码相同。

负数的反码是在原码的基础上,符号位为不变,其余位取反,0变1,1变0.

负数的补码,是在反码的基础上末位加1

为什么要了解原码反码和补码呢,是因为,计算机在计算时,是使用补码在进行计算的。原码和反码是过程,便于我们理解

例如:-3 + 2 ,在计算机内部是怎么计算的。

-3的原码为

1000001

1

反码为

1111110

0

补码为

1111110

1

2的原码反码补码都一样

0000001

0

-3的补码加上2的补码为

1111111

1

计算后的补码转换为反码为

1111111

0

转换为原码为

1000000

1

计算:1 * 2^0 + 0 * 2^1 = 1 + 0 = 1,因为符号为为1,即为负数,结果为-1

通过原码补码反码,就可以解释为什么在进行强制类型转换时,如果超出被强转类型的范围会导致的精度缺失的问题

例如:

public class index {
    public static void main(String[] args) {
        int a = 129;
        byte b = (byte)a;
        //结果为-127
        System.out.println(b);
    }
}

原因:129是int类型,占用四个字节,32个bit位。

129在4个字节中的表现形式

00000000000000000000000010000001

转换为byte类型时发生截断操作,为

1000000

1

我们知道数据在计算机的储存是补码形式存在的,符号为1,为负数,所以上述是-129的补码形式,

反码为

1000000

0

原码为:

1111111

1

计算为-127.

注意:-128比较特殊,补码为10000000,没有原码,反码不能简单的认为是补码-1,它的反码为11111111,在计算时,直接用补码计算。

运算符

算数运算符

+  , -,   *,  /,  %,前++,后++,前--,后--

加减乘除四则运算没什么说的,需要注意的是数据类型的使用。

%(取余)的操作就是求的是余数。

前++是先自增后计算,后++先计算后自增

前--是先自减后计算,后--先计算后自减

例如:

public class index {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //++在后,即先计算后自增,a + b = 10 + 20,a = 11
        int c = a++ + b;
        //++在前,即先自增后计算,a = 12,a + b = 12 + 20 = 32
        int d = ++a + b;
        System.out.println(c);
        System.out.println(d);
        System.out.println(a);
    }
}

赋值运算符

=:在数学叫做等于号,就是把等号右边的值赋值给左边。

配合+  , -,   *,  /,  %就有了+=,-=,/=,%=

例如:

public class index {
    public static void main(String[] args) {
        byte a = 10;
        //类型自动提升为int
        int b = a + 10;
        //通过+=计算数据类型不会提升
        byte c = a += 10;
        System.out.println(c);
    }
}

比较运算符

> ,<,>=,<=,==,!=(不等于)

用于比较基本数据类型除了boolean,一般用于比较两个值之间的关系,返回一个布尔值

例如:

public class index {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;
        //结果为true
        System.out.println(a < b);
        //结果为false
        System.out.println(a > b);
        //结果为true
        System.out.println(a <= b);
        //结果为false
        System.out.println(a >= b);
        //结果为false
        System.out.println(a == b);
        //结果为true
        System.out.println(a != b);
    }
}

逻辑运算符

&(逻辑与),&&(短路与),|(逻辑或),||(短路或),!(非),^(异或)

逻辑运算符操作的都是boolea类型的变量或常量,运算的结果也是boolean类型。

&,&&:符号两边为true,结果才为true,否则为false

|,||:符号两边一边为true,结果就为true,两边为false结果为false

!(非):当布尔类型为true是,结果为false,当布尔类型为false是,结果为true

^(异或):两边布尔值不同时,为true,相同时为false

&与&&的区别为:短路,如果&左边条件表达式为false,依然会执行右边的表达式,则&&就不会执行右边,增加了运行的效率

|,||同上。

条件运算符:

格式为:条件表达式  ? 表达式1  :表达式2

条件表达式的结果为,true或者false

如果为true就执行表达式1,false就执行表达式2

例如:

public class index {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a > b ? a : b;
        //结果为20
        System.out.println(c);
    }
}

标签:java,String,int,补码,System,第二天,println,自学,public
From: https://blog.csdn.net/2302_76794666/article/details/140683438

相关文章

  • Java中的object类与objects类
    Java中的Object类和Objects类在Java类库中扮演着不同的角色,它们之间存在明显的区别。Object类基础与根源:Object类是Java类层次结构的根类。这意味着Java中的每一个类(除了Object类本身)都直接或间接地继承自Object类。Object类位于java.lang包中,这个包是Java的核心包之一,自......
  • Java中的日志管理:SLF4J与Logback
    Java中的日志管理:SLF4J与Logback大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!本文将介绍如何在Java中使用SLF4J与Logback进行日志管理,帮助您在项目中实现高效的日志记录和管理。一、SLF4J与Logback简介SLF4J(SimpleLoggingFacadeforJava)是一种简单......
  • 使用Apache Camel进行Java企业集成
    使用ApacheCamel进行Java企业集成大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!本文将介绍如何使用ApacheCamel进行Java企业集成,帮助您在企业应用中实现高效的数据交换和流程自动化。一、ApacheCamel简介ApacheCamel是一个强大的开源集成框架,它提......
  • 常见日志输出目标(Logback | Log4j2 | Java Util Logging)
    常见日志输出目标控制台:日志可以被输出到控制台(终端),通常用于开发和调试阶段。在日志框架中,控制台输出通常由ConsoleAppender(例如Log4j、Logback)配置。日志文件:日志也可以被写入到日志文件中,以便于长期存储和分析。在日志框架中,文件输出通常由FileAppender(例如Log4j、......
  • java | final 关键字介绍
    在Java中,final关键字用于声明一个常量、不可改变的变量、方法或类。对于如privatefinalStringUtilstringUtil;这种情况,final关键字具有以下作用:final的作用不可重新赋值:final修饰的变量在初始化之后,不能被重新赋值。对于privatefinalStringUtilstringUtil;,这意味着一......
  • Java简介及JDK的安装
    一、JAVA语言概述1.java语言的发展Java的开发者为詹姆斯·高斯林。转至sun公司,后参与“绿色计划”,发展了一套语言“Oak”,之后改名为Java(爪蛙)。2.Java语言的平台版本JavaSE标准版本:为普通开发桌面和商务应用程序提供的解决方案;此技术为后两项的基础,可以完成一些桌面的开发。......
  • JAVA初级之集合(List集合)
    目录1、数组和集合的区别2、集合的体系结构3、collection集合3.1collection集合的概述 3.2 Collection集合常用方法 3.3 Collection的增删查实现3.3.1增加3.3.2移除功能3.3.3查找功能4、List集合4.1List集合的概述和特点4.2List集合的常用方法 4.3常......
  • 7月24日JavaSE学习笔记
    序列化版本控制序列化:将内存对象转换成序列(流)的过程反序列化:将对象序列读入程序,转换成对象的方式;反序列化的对象是一个新的对象。serialVersionUID是一个类的序列化版本号privatestaticfinallongserialVersionUID=1L;//版本号如果序列化版本号没有定义,JDK会自动......
  • 7月25日JavaSE学习笔记
    线程的生命周期中,等待是主动的,阻塞是被动的锁对象创建锁对象,锁对象同一时间只允许一个线程进入//创建锁对象Locklock=newReentrantLock(true);//创建可重入锁可重入锁:在嵌套代码块中,锁对象一样就可以直接进入执行公平锁:保证线程获取锁的顺序与线程请求锁的顺序......
  • java包装类型缓存简单探究-Integer为例
    文章目录包装类型缓存自动装箱与valueOf感悟结语包装类型缓存包装类型缓存是什么本文以常用的Integer包装类为例做一个探索,感兴趣可以用类似方法查看其他包装类。我们都知道它会缓存-128到127之间的整数Integer对象。结论大伙都知道。那么我们今天就来探究一下底......