初始Java及数据类型与变量

发布于:2023-02-12 ⋅ 阅读:(786) ⋅ 点赞:(0)

        学习java已经三天啦,虽然还是懵懵懂懂的状态,但还是有一些收获和见解的,下面来复盘一下这几天的理解。

目录

一、初识Java

1、类:

2、打印:

3、数组定义:

4、运行过程:

5、标识符:

 二、数据类型与变量

1、数据类型

2、变量

1、定义和结构

2、使用细节

3、包装类型

4、类型转换

(1)自动类型转换(隐式)

(2)强制类型转换(显式)

5、类型提升

6、字符串类型 


一、初识Java

1、类:

        一个Java文件中可以有若干类,但是只能有一个 public 类,并且这个public class 必须与文件名相同,否则程序报错。

         并且每个类中都存在方法,方法类似于C语言中的函数,每个类中有且只有一个main class{ }

2、打印:

        想要在屏幕输出时,可以用“println”,输出字符串“hello world”的代码如下:

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

         并且“println”自带直接换行的功能。

3、数组定义:

        Java 定义数组时,直接将类型名写在前面,后面接变量名,int [ ] arr,表示的定义的变量名为arr的整型数组。

4、运行过程:

        

5、标识符:

        标识符是指类名、方法名、变量取的名字。需要注意以下几点:

(1)标识符不能是关键字;

(2)main可以做标识符;

(3)标识符中可以包含数字、字母、下划线、$符号,其中数字不可以作为开头,$不建议开头;

(4)定义常量时,一般用大写字母。

 二、数据类型与变量

1、数据类型

        可分为基本数据类型和引用数据类型,今天我们主要介绍八种基本数据类型:

数据类型 关键字 字节大小 数值范围
字节型 type 1 -128~127
短整型 short 2 -2^15~2^15-1
整型 int 4 -2^31~2^31-1
长整型 long 8 -2^63~2^63-1
单精度浮点数 float 4 不关注
双精度浮点数 double 8 不关注
字符类型 char 2 0~65535
布尔类型 boolean 无明确规定 true 和 false

        需要知道的是:

(1)不论电脑是64位还是32位系统,上述字节大小都不会发生改变;

(2)Java中不存在无符号数字;

(3)整型默认为 int 型;浮点型默认为 double。

2、变量

1、定义和结构

对于一些会经常发生改变的内容,没有固定的值,这些我们称之为变量,身高、体重、年龄等等,上述的数据类型就是用来定义不同种类的,结构如下:

数据类型 变量名 = 初始值;

        比如我们定义两个整型变量 a 和 b ,初始值赋予1和2;定义一个布尔类型为假的:

int a = 1;
int b = 0;
或者 int a=1,b=0;

//布尔
boolean b = false;

        需要注意的是当我们定义 float 和 long 时,需要在值后面加 L 或者l,否则会被默认赋值为 double 和 int类型。

long a = 10L;//定义一个变量a,数值是10的长整型变量

        如果定义的局部变量没有初始化,那么程序在使用前一定要初始化,否则无法运行。当赋值大于这个变量所属数据类型的范围时,程序会编译报错。

2、使用细节

(1)整型中C语言里没有的是 type类型,这个类型用法和int 基本一致,知只是范围相对后者来说要小很多,同时这个类型用的相对也比较少;

(2)在Java中,int/int得到的还是int 型,如果想要输出小数,要改成小数形式;

(3)相比较于C语言中的ASSCII,Java有自己的Unicode表示字符,且包含有ASSCII,并加了其他一些字符,包括中文。Unicode占两个字节,没有负数,范围为0~653;

(4)Java中使用 单引号+单个字母 的形式表示字符字面值,java中的字符可以存放整型。

3、包装类型

        每种基本数据类型都对应有自己的包装类型,除了char的包装类型为Character以及int包装类型为Integer外,其余几个包装类型为对应的关键字的第一个字母大写。至于包装类型的作用是什么,以后会继续深入学习。

4、类型转换

        相对于C语言来讲,在类型转换这一块,java是十分严格的,不同类型之间的变量相互复赋值的时候,会进行严格的校验。类型转换分为两种自动类型转换和强制类型转换,又分别叫隐式转换和显式转换。

(1)自动类型转换(隐式)

        字面理解就足以说明,就是编译器自动给你转换的,隐式,偷偷摸摸的,没让你知道的,这种对应的是将小范围的数据类型转为范围大的。就像一个矿泉水瓶和一个水缸,我现在在矿泉水瓶里面放了水,我想把水放进缸里,矿泉水瓶本身就能装的下的水,放进缸里也一定能放得下,所以就直接转换就可以,自动类型装换就是这样,举例说明一下:

int a = 10;
long b = 20L;
b=a;

         因为 b 的范围要大于a 的范围,在编译时,编译器会自动将 a 提升为long型,然后赋值,能够编译

(2)强制类型转换(显式)

        那与隐式相反,显示就是把范围大的变量的值赋给范围小的,把缸里的水放进瓶子里,这样做很不安全,很容易谁就贯满溢出了,编译器是不会支持这么冒险的事情的,所以我们进行强制转换,我们人为地强迫他试着把水灌进瓶子里,代码是:

int a = 10;
long b = 20L;
a=(int)b;

        强制类型转换可能会导致精度丢失,而且转换不一定能成功。

(3)注意

        不相干的类型不能转换,比如布尔类型和字符串之间是无法转换的。当我们在对变量进行赋字面值时(直接的数字和字符串),编译器会进行检查,如果超过变量类型的范围,则无法编译。

5、类型提升

        关于类型提升的有几个注意的点:

(1)首先要知道在Java中,最小的计算字节为4个字节,所以 short、byte这两种类型在计算的时候需要整型提升为 int 类型。

byte a = 10;
byte b = 5;
byte c = a+b;//这句无法执行,因为默认a 和 b 是整型,所以正确的是
int c = a+b ;//或者对(a+b)进行强制类性转换 byte c = (byte)(a+b);

(2)int 和 long 的计算时,int 被提升为long ,结果也同样是long类型;

6、字符串类型 

        在Java 中字符串是有自己的类型的,关键字为String,包装类型为String。字符串和整型之间的一些运算关系细节:

(1)当字符串和整数在一起使用 “+”的时候,“+”就是一个拼接的意思,两个字符串“+”的时候也同样是拼接的意思。

int a = 10;
String s = hello;
String str = a + s;
//str 的结果为“10hello”;

int a = 10;
int b = 20;
String s = hello;
System.out.println(a+b+s)  //输出结果为“30hello”
System.out.println(s+a+b)  //输出结果为“hello1020”  因为上一个是整型假加法在前面,在打印的时候从左向右进行,第一步正常计算,第二步进行整型和字符串的拼接,而第二种第一步直接就是拼接,所以最终结果为拼接结果。

(2)int 转成 String

int a = 10;
String s = a+"";  //直接进行整数与空白字符串拼接
string str =String.valueOf(a);  //利用String.中提供的方法

(3)String转成int

String str = "10";
int a = Integer.parselnt(str);  //只有一种利用int的包装类型提供的方法来进行转换


网站公告

今日签到

点亮在社区的每一天
去签到

热门文章