Java学习2

这篇博客详细介绍了Java中的类型自动提升与强制转型,特别是浮点数运算和移位计算。此外,讲解了布尔运算的短路特性、三元运算符的使用以及字符串和字符类型的特性和操作。还涵盖了Java中的输入输出、构造方法、方法重载、继承和多态等核心概念,强调了多态在代码设计中的重要性及其动态调用的特性。
摘要由CSDN通过智能技术生成

Java学习笔记

移位计算

计算机中整数总是以二进制的形式表示,例如int类型的整数7使用4字节表示的二进制如下:
00000000 00000000 00000000 00000111
在这里插入图片描述
在这里插入图片描述

类型自动提升与强制转型

运算过程中,如果参与运算的两个数的类型不一样,那么计算结果为较大类型的整型。例如short和int计算,结果总是int,原因是short首先自动被转型为int。

强制转型

int i =12345
short s=(short)i 

**注意:超出范围的强制转型会得到错误的结果。

浮点数

整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回一个特殊值
在这里插入图片描述

浮点数的强制转型

浮点数可以强制转型为整数,在转型时,浮点的小数部分会被丢掉,如果转换后超过整数能表示的最大范围,将返回整型的最大值
如果要四舍五入 可以对浮点数加上0.5再强制转型

布尔运算—短路运算

如果布尔运算的表达式能提前确定结果,则后续的计算不再执行,直接返回结果。
在这里插入图片描述

三元运算符

Java还提供一个三元运算符b? x : y,根据第一个布尔表达式的结果,分别返回后续两个表达式之一的计算结果。
三元运算符会首先计算b,如果b为true,则只计算x,否则只计算y。
此外,x,y类型必须相同,因为返回值不是boolean,而是x和y之一。

java中字符和字符串是两种不同的类型

字符类型

字符类型char是基本数据类型,一个char保存一个Unicode字符

char c1='A'
char c2='中'

要显示一个字符的Unicode编码,只需将char类型直接赋值给int类型即可:

int n1='A'
字符串类型

char类型不同,字符串类型String是引用类型,用“…”表示字符串,一个字符串可以存储0个到任意个字符。

转义字符 **

在这里插入图片描述
可以使用**+**连接任意字符串和其他数据类型

public class Main {
   
    public static void main(String[] args) {
   
        String s1 = "Hello";
        String s2 = "world";
        String s = s1 + " " + s2 + "!";
        System.out.println(s);
    }
}

输出是Hello world

如果用**+**连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,在连接。

public class Main {
   
    public static void main(String[] args) {
   
        int age = 25;
        String s = "age is " + age;
        System.out.println(s);
    }
}

age is 25

可以使用""" …"""表示多行字符串。

字符串不可变的特性
public class Main {
   
    public static void main(String[] args) {
   
        String s = "hello";
        System.out.println(s); // 显示 hello
        s = "world";
        System.out.println(s); // 显示 world
    }
}

hello world

执行String s=“hello"时,JVM虚拟机先创建字符串"hello”,然后把字符串变量s指向它:
在这里插入图片描述
紧接着,执行s=“world"时,JVM虚拟机先创建字符串"world”,然后把字符串变量s指向它:
在这里插入图片描述
字符串"hello"还在,只是我们无法通过变量s访问,字符串的不可变是指字符串内容不可变。

空值null

引用类型的变量可以指向一个空值null,他表示不存在,即该变量不指向任何对象。例如:
在这里插入图片描述

练习

请将一组int值视为字符的Unicode编码,然后将它们拼成一个字符串:

public class
practice {
   
    public static void main(String[] args){
   
        int a =72;
        int b =105;
        int c=65281;

        char a1=(char)a;
        char b1=(char)b;
        char c1=(char)c;
        String s = ""+a1 + b1 + c1;
        System.out.println(s);
    }
}

输入和输出

System.out.println() 用于向屏幕输出一些内容,println是print line的缩写,表示输出并换行。

格式化输出

public class Main {
   
    public static void main(String[] args) {
   
        double d = 3.1415926;
        System.out.printf("%.2f\n", d); // 显示两位小数3.14
        System.out.printf("%.4f\n", d); // 显示4位小数3.1416
    }
}

java的格式化功能提供了多种占位符,可以把各种数据类型格式化成指定的字符串:
在这里插入图片描述

输入

从控制台读取一个字符串和一个整数:

import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
   
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象
        System.out.print("Input your name: "); // 打印提示
        String name = scanner.nextLine(); // 读取一行输入并获取字符串
        System.out.print("Input your age: "); // 打印提示
        int age = scanner.nextIn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值