【Java基础知识】Java基本结构以及数据类型

Java 基本结构

快速入门:简单Java程序

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

运行代码,在控制台就会打印 Hello, World! 并且换行。
注: 在 System.out 还有一个方法 print 方法,它在输出后不打印换行。

可以看见用大括号划分程序的各个部分(通常称为),Java中任何方法都可以用 “{” 开始,“}” 结束。

三种注释

1、单行注释: 在每一行前面标记 //。
2、多行注释: 使用 /* 和 */ 注释界定符。
3、文档注释:以/**开始,*/结束。

public class Main {
    /**
     * 这是文本注释
     */
    public static void main(String[] args) {
        System.out.println("Hello, World!"); // 这是单行注释
        /*
        这是多行注释
        这是多行注释
        */
    }
}

单行注释最常用,多行注释一般注释代码比较多的片段,
文本注释,一般在类上或者函数上,用来解释作用。

基本数据类型

Java 数据类型分为两大类:(1)基本数据类型(2)引用类型

(1) 基本数据类型有 8 种数值型 [byte , short , int , long , float ,double] char , boolean

(2) 引用类型 [类,接口, 数组], 后面会学习。

整型

Java提供了四种整型:

类型存储需求取值范围
byte1 字节-128 ~ 127
short2 字节-32 768 ~ 32 767
int4 字节-2 147 483 648 ~ 2 147 483 647(刚刚超过 20 亿)
long8 字节-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807

通常情况下 int 最常用,byte 和 sort 类型一般用于特定的场合,列如,底层的文件处理或者存储空间宝贵时的大数组.

长整型数值有一个后缀 L 或者 l (如 20000000L).

十六进制数值有后缀 0x 或者 0X,八进制有前缀 0,比较容易混淆,最好不要使用, (Java7开始)二进制有前缀 0b 或者 0B.

(Java7开始)可以为数字加_ 如 100_000.

long num1 = 10000L; // 长整型 10000
int num2 = 0x100; // 十六进制 100 十进制 256
int num3 = 0100; // 八进制 100 十进制 64
int num4 = 0b1001; // 二进制 1001 十进制 9

浮点类型

Java提供了两种浮点类型:

类型存储需求数值范围
float4 字节大约 ± \pm ± 3.402 823 47E+38F(有效位6~7位)
double8 字节大约 ± \pm ± 1.797 693 134 862 315 70E+308(有效位 15 位)

数值范围记住有效位就行,平常的小数默认是double类型,一般都够用了.

Java 的浮点型有两种形式:

整数形式:5.20 5.20f .520

科学计数法:5.2e2

有后缀 F 或者 f 为 float 型,其他都为 double 型。

// Java 的浮点型有两种
double f1 = 5.20; // double型
float f2 = 5.20f; // float型
double f3 = .520; // double型
// 科学计数法
double f4 = 5.2e5; // double型,5.2*(10的2次方)

char型

char 原本用于表示单个字符,在 Java 中 char 占用两个字节。

我们常说的 Java 中的 char 占几个字节,应该是 Java 中内码中的 char。

内码是指java运行时,其char和string在内存中的编码方式。

外码是程序与外部交互时外部使用的字符编码,比如序列化技术。 外码可以理解为:只要不是内码,那就是外码。

要注意的是,源代码编译产生的目标代码文件(可执行文件或class文件)中的编码方式属于外码。 JVM中内码采用UTF16。 UTF-16 的 16 指的就是最小为 16 位一个单元,也即两字节为一个单元。

早期,UTF16采用固定长度2字节的方式编码,两个字节可以表示65536种符号(其实真正能表示要比这个少),足以表示当时unicode中所有字符。但是随着unicode中字符的增加,2个字节无法表示所有的字符,UTF16采用了2字节或4字节的方式来完成编码。Java为应对这种情况,考虑到向前兼容的要求,Java用一对char来表示那些需要4字节的字符。所以,java中的char是占用两个字节,只不过有些字符需要两个char来表示。 这里就解释了为什么有些字符需要两个char来表示的问题。

参考 https://www.php.cn/faq/502045.html

char 类型的字面量需要用单引号括起来,如,‘B’ 的编码为 66. char类型的值可以表示为十六进制,范围从 \u0000 到 \uffff。

// 可以使用单个字符,也可以使用 \ + u 的方式
char c1 = 'A';  // 字符为 A,编码值为 65,可以使用int 赋值
int n1 = c1;  // 这里 n1 为 65
char c2 = '\u005B'; // 字符 [
char c3 = '\u005D'; // 字符 ]

特别注意:在使用注释的时候,一定要小心使用 \u 注释,特别是在注释文件路径的时候,如果不处理的话就会报 java: 非法的 Unicode 转义 的错误。

// D:\JavaFile\unicode  这里的注释会报错,因为 \u后面不是十六进制的数

boolean类型

boolean(布尔) 类型有两个值:false 和 true,用来判断逻辑条件。与整型之间不能转换。

boolean isTrue = true;

数据类型转换

在这里插入图片描述

1、byte -> short

byte b = 100;
short s1 = b; // byte -> short; s1 = 100;

2、short -> int

short s = 120;
int n1 = s; // short -> int; n1 = 120;

3、char -> int

char c = 'A';
int n2 = c; // char -> int; n2 = 65;

4、int -> long

int n = 10;
long l1 = n; // int -> long; l1 = 10;

5、int -> float

// 2147483647 为 int 的最大值,这里 f2=2.14748365E9,后面两位被四舍五入了,精度丢失了
float f2 = 2147483647;

6、float -> int

// 这里小括号进行强转,int 数据丢失小数部分 f=12.11f n3=12.
int n3 = (int)f;

7、int -> double

int n5 = 100;
// double为8个字节,int只有4个,所以double是完全能够装下int的
double d1 = n5; // d1 为 100.0

8、double -> int

double d = 123.12;
// n4 变成 123,进度丢失
int n4 = (int)d;

9、long -> float

long l2 = 10000000000000L;
// float 精度丢失
float f3 = l2; // 9.9999998E12

10、float -> long

float f4 = 1234.23f;
// 小数丢失
long l3 = (long)f4; // 1234

11、long -> double

long l4 = 9223372036854775807L;
// 进行了四舍五入
double d2 = l4; // 9.223372036854776E18

12、double -> long

double d3 = 9223372036854775807.123;
// 最大值能够保存
long l5 = (long)d3; // 9223372036854775807
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值