初始Java和 数据类型(Java语言)

本文详细介绍了Java语言的基础知识,包括数据类型如int、long、float、double、char及byte等的特性,变量的声明、作用域、命名规则,以及类型转换的规则和注意事项。此外,还探讨了Java中的常量、字面常量和类型提升的概念。文章适合初学者了解Java语言的基本语法。
摘要由CSDN通过智能技术生成

引言

经过C语言学习我们简单了解了程序语言,那么C语言的学习告一段落,但是C语言提高需要我们不断的练习,那么接下来我们要进行Java语言的学习了。

第一个Java语言程序

public class HelloWorld{
	public static void main(String[]args){
		System.out.println("hello world");
	}
}

我们可以发现Java的main方法比C语言的main函数要复杂的多,那么我们介绍一下第一个程序:
public:访问修饰限定符(后期会进一步认识)。
class:关键字。用来定义一个类。(用C语言来形容,可以理解为类型)
HelloWorld:类的名称。
public static void main():就是main()方法(C语言中叫做main()函数,Java语言中函数叫做方法)
String []args:是main方法的形式参数,args是数组需要注意的是,数组跟C语言中的数组是不一样的,C语言中的数组是arr[ ],而在Java语言中的数组是[ ]arr。
System.out.println(“hello world”):就相当于是C语言中函数的printf()函数。

数据类型和变量

整型变量——int

整型变量对于Java语言来说,有几点跟C语言是不一样的。
1、在Java语言中,int字节都是4个字节,不管是什么平台,什么操作系统,因此说明Java语言可移植性高。
2、Java中的int,没有所谓的无符号整型,统一都是有符号的,所以没有unsighed int,所以对于int而言,取值范围是:-2147483648(-231)~2147483647(231-1)
3、变量的命名和C语言命名时一样的,所以我们关注一下就行,不能用数字开头命名,用平常的英文单词就行,出现多个就在后面加上数字,或者下划线等。
4、变量的定义时不能不进行初始化的,如果不进行初始化,编译器就会报错。

长整型——long

1、long定义的变量有8个字节,64位,取值为(-263~263-1).
2、在Java中不存在long long类型的。

单精度浮点类型——float

1、单精度浮点数占4个字节,32位。
2、注意在定义初始化变量为单精度浮点数时要注意数字后加上f,例子:

float num = 1.0f;    // 写作 1.0F 也可以
System.out.println(num);

这个跟C语言不一样,在C语言中,如果不加f,会报警告,类型不兼容,但是在Java中会报错,无法通过运行。

双精度浮点类型——double

浮点类型的跟C语言极其相似。
1、double类型的变量占8个字节,64位。
2、同样在进行除法运算需要产生小数时需要定义浮点类型,否则按整型处理。例子:

int a = 1;
int b = 2;
System.out.println(a / b);

运算结果为0;
3、Java 的 double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差。

字符类型——char

字符类型跟C语言就不一样了。
在C语言中字符类型占1个字节,Java不一样。
1、字符类型在Java中占2个字节,16位。
2、因为占两个字节,因此Java是可以打印汉字的。

char ch = '呵'; 
System.out.println(ch);

汉字在字节中是占两个字节。
3、同样如果字符定义一个变量,将整型赋值给改变量,打印出来仍然是整型对应的ASCLL码值。

字节类型变量——byte

这个是C语言中没有的类似于C语言中的char类型。
1、byte占1个字节,8位。
2、字节类型表示的也是整数. 只占一个字节, 表示范围较小 ( -128 -> +127 )
3、字节类型和字符类型互不相干。

短整型变量——short

1、short类型是2个字节,16位。取值范围(-216~216-1)
2、 这个表示范围比较小, 一般不推荐使用。

布尔类型变量——boolean

1、boolean 类型的变量只有两种取值, true 表示真, false 表示假。
2、Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。
3、boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定。

字符串类型变量

字符串类型变量是C语言没有的变量。
我们看一个例子:

public class TestDemo {
    public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
    }
}

1、Java 使用 双引号 + 若干字符 的方式表示字符串字面值。
2、 和上面的类型不同, String 不是基本类型, 而是引用类型。
3、字符串中的一些特定的不太方便直接表示的字符需要进行转义。

转义字符

转义字符有很多, 其中几个比较常见的如下:

转义字符解释
\n换行
\t水平制表符
\’单引号
\"双引号
\\反斜杠

变量的作用域

关于变量的作用域是跟C语言一样的,也就是该变量能生效的范围, 一般是变量定义所在的代码块(大括号)。我们来看例子:

class Test { 
 public static void main(String[] args) { 
 { 
 int x = 10; 
 System.out.println(x); // 编译通过; 
 } 
 System.out.println(x); // 编译失败, 找不到变量 x. 
 } 
} 

变量的命名规则

硬性指标:

  • 一个变量名只能包含数字, 字母, 下划线和美元符号($)。
  • 数字不能开头。
  • 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量。
    软性指标:
  • 变量命名要具有描述性, 见名知意。
  • 变量名不宜使用拼音(但是不绝对)。
  • 变量名的词性推荐使用名词。
  • 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写。

常量

变量是在程序运行时,可以改变的量;而常量是在编译的时候,就已经确定的值,而常量分为两种:1.字面常量;2.final修饰的变量(相当于C语言中的const)

字面常量

字面常量解释
10int 字面值常量(十进制)
010int 字面值常量(八进制) 由数字 0 开头. 010 也就是十进制的 8
0x10int 字面值常量(十六进制) 由数字 0x 开头. 0x10 也就是十进制的 16
10Llong 字面值常量. 也可以写作 10l (小写的L)
1.0double 字面值常量. 也可以写作 1.0d 或者 1.0D
1.5e2double 字面值常量. 科学计数法表示. 相当于 1.5 * 10^2
1.0Ffloat 字面值常量, 也可以写作 1.0F
truefloat 字面值常量, 也可以写作 1.0F
‘a’char 字面值常量, 单引号中只能有一个字符
“abc”String 字面值常量, 双引号中可以有多个字符

理解类型转化

int 和 long/double 相互赋值

我们看一个例子:

public static void main(String[] args) {
        int a = 10;
        long b = a;
        System.out.println(b);//正确
        long l = 12;
        int c = l;
        System.out.println(c);//报错
}

在这个例子中,a是可以赋值给b的,因为b是long类型,而a是int类型,所以不会报错,但是l不能赋值给c,原因正好相反,但是可以进行强制类型的转化。所以正确是这样的。

public static void main(String[] args) {
        long l = 12;
        int c = (int)l;
        System.out.println(c);
}

结论: 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型, 反之则不行。

int 和 boolean 相互赋值

我们看个例子:

public static void main(String[] args) {
        int a = 10;
        boolean b = (boolean) a;
        boolean c = true;
        int d = (int) c;//报错
    }

int和boolean是无法互相赋值的,强制类型转化也不行。
结论: int 和 boolean 是毫不相干的两种类型, 不能相互赋值。

int字面值常量 给 byte 赋值

我们来看一个例子:

public static void main(String[] args) {
        byte a = 128;//报错
    }

在这个代码中,我们可以发现程序会报错,原因就在于byte的取值范围:-128~127;因此我们需要注意。还有一个容易错的点,我们来看这样一个例子:

public static void main(String[] args) {
        byte a = 1;
        byte b = 2;
        byte c = a + b;//报错
    }

a,b,c都是byte类型,CPU在对小于4个字节类型的数据进行运算时,会进行整型提升,所以a+b变成了int类型,因此要想赋值给c,需要强置类型转化。
正确代码:

public static void main(String[] args) {
        byte a = 1;
        byte b = 2;
        byte c = (byte)a + b;
    }

类型转换小结

  1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型。
  2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失。
  3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查。

类型提升

前面我们已经介绍了一个类型提升的一种情况:在运算小于4个字节的类型时,会将该类型提升为int类型。还有一种,我们来看例子:

public static void main(String[] args) {
        int i1 = 10;
        long l1 = 20;
        int i2=(int)(i1+l1);
    }

int时占4个字节,long占8个字节,因此在运算时,会将int类型提升为long类型,在将i1和l1相加,所以此时类型为long,因此不能直接赋值给i2类型,所以我们需要强制类型转化为int类型才能进行赋值。
Java语言的数据类型和常量,变量的介绍就到这里,希望对大家有所帮助,如果有什么错误,欢迎大家私信或者留言,谢谢各位!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Solitudefire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值