面向初学者的Java基础知识(一)

前言

相信各位读者都听说过java这门编程语言,它是一门面向对象的编程语言(Object Oriented Programming,简称OOP)。java与python,C++都是如今比较火爆的语言,但是在应用方面,这几种语言又各有不同。如java广泛运用在大型应用的开发中,但python就更偏向于数据科学和机器学习。

得益于java较高的性能以及丰富的库和框架,学习java已经成为了学习计算机的路上一个必备的过程,例如AP系列课程中的计算机科学(AP Computer Science A)就使用java作为主要的编程语言。

作为选修过AP CSA并考了五分,以后也想继续学习计算机的高中生,我将会在接下来的几篇文章中介绍关于java的基础知识,希望能帮助到更多的计算机初学者以及同样学习AP CSA这一门课的学生。

在本篇文章,同时也是java基础知识系列的第一篇中,我将详细讲解java数据类型相关的内容。

引入

1)变量类型以及声明

在java中,声明变量需要提前设置变量的类型以及名字,例如:

int a = 8;
double n = 1.5;
String s = ”hello world”;

由于java中变量类型转换并不是那么简单,需要满足一定的条件,因此在声明变量之前务必要深思熟虑。同时,java中的变量名设置也需要遵循一定的规则,变量名中只能包括字母,数字,下划线和美元符号,并且数字不能作为名字的开头。在命名的过程中,很多人会选择给变量起一个描述性的名字,这并不是一个强制性的要求,但可以使代码更加容易理解。

2)栈(stack)&堆(heap)

栈和堆是java中两种不同的内存分类,当我们声明变量时,原始类型(primitive)的变量(如int,double,boolean等)都存储在栈上面,而引用类型(reference)的变量(如String,Class等)中,变量名存储在栈上,变量内容存储在堆上,栈中的变量名指向堆中的变量内容。

声明一个名为s,内容为“hello world”的字符串

主要数据类型

1)Integer整数(primitive类)

顾名思义,Integer类型的变量中只能存储整数,声明方式为:int 变量名=变量内容(只能为整数);

可能初次接触Integer变量的同学会有些疑惑,为什么在java中声明整数变量时用的是int但变量类型的名字又不叫int而叫Integer呢?

这个问题涉及到java中的包装类(Wrapper Class),即将一个原始类型(primitive 类)的变量包装起来,将原始类型的数据强制存到堆空间上。关于包装类更详细的信息我会在讲解class时一并说明。

在java中,整数类型的变量是有存储限制的。Java中能存储的最小整数是-2147483648,能够存储的最大整数是2147483647,在java中调用这两个值可以直接输入Integer.MIN_VALUE(调用最小值)以及Integer.MAX_VALUE(调用最大值)。

和其他所有的编程语言一样,java中也可以对数据进行运算,常见的运算符有以下几个

运算在java中的形式示例
+

int n=1+2;

n为3

-

int n=3-1;

n为2

*

int n=3*2;

n为6

 除/

int n=4/2;

n为2

余数%

int n=4%3;

n为1

值得一提的是,和python不一样,java中没有计算幂的符号。在java中计算幂有两种方式,一是将数字或者变量乘以自身多次,比如计算x的三次方就可以通过x*x*x来算;二是使用Math类中的pow方法,关于Math这个类我也会在class的内容中进行讲解。

且在java中,“/“的结果默认为整数,如果计算出来的结果是小数,java会自动将结果的小树部分抹掉,如5/2本来应该是2.5,但在java中的结果是2。

在声明int类型的变量时如果利用了小数进行运算,java会报错,可以将小数强制转换为整数(利用(int))来计算,(int)会将括号后的第一个小数强制转换为小数,但不会四舍五入,只会抹掉小数部分。

对于java的最大值和最小值进行计算时,会发生溢出(overflow),即用最大值加其他数字时,会得到最小值。

int n = Integer.MAX_VALUE+1;

此时输出的结果为-2147483648。

同理,用最小值减去某个数字,也会得到最大值。

2)Double浮点数(primitive类)

在java中,double类型是用来存储小数的,如果利用double存储整数,则数字会从整数变为小树形式,如将2存在一个double类型的变量中,2会变成2.0。

double类变量的运算和int类基本相同,但double的除法是可以得到小数结果的。

计算3/2并且将结果赋值给a变量

       

double a = 3/2;

此时a的值为1.0,如果想给a赋值1.5,可以将3和2中其中一个数变成小数形式

double a = 3.0/2;

或者

double a = (double)3/2;

(double):将括号后第一个整数强制转换为小数。

值得注意的是,double类型的数据在存储的过程中可能会导致精度的缺失,这是因为将小数转换为二进制时,往往不能精确转换,只能存储近似值,因此有时候存储的小数值会不准确。

3)Boolean布尔值(primitive类)

Boolean只包括两个值,即true和false,因此,boolean类型的变量常被用在需要判断情况下,如用在if-else结构中,又或者是在声明class的时候作为用户输入的变量。同时,java中的三个逻辑运算符号,||(或),&&(与),!(非)也会与boolean类型的值搭配使用。

4)char(primitive类)

char类型的变量只包括一个字符,如一个字母,一个数字或者是一个汉字等,声明char类型变量时需要将变量内容用单引号括起来。

5)String字符串(reference类)

在java中,字符串是一个非常重要的变量类型,通常人们会将文本内容存放在字符串类型的变量中。

字符串的一个很重要的特点就是不可变(immutable)。

前文中提到过,reference类型的变量在声明时名字存在栈(stack)上,而内容存在堆(heap)上,因此,string在声明时就有一个值生成在了堆上,而栈上的变量名指向堆上的内容。堆上的值一旦生成了就不会改变,我们修改string的内容时,只是在堆上又生成了一个新的值,并且栈上的变量名指向了这个新生成的值,但是原本的值没有改变。

因此,不可变指的是字符串的变量名指向新的值时,旧的值仍然在堆上存在,而不是字符串包括的内容无法改变。

在java中,字符串是有长度的,并且它的长度为字符串里字符的数量,如String s = “hello world”; 字符串s的长度为11。而且字符串中每个字符都有一个下标,这个下标从0开始,到字符串长度-1结束,如字符串s中“h”的下标为0,“d”的下标为10,即11-1。

java中有很多关于字符串的方法,下表中列出了几个常用的方法,并且以上一段中的字符串s为例

方法内容用法
length()

计算字符串长度

s.length()

返回11

indexOf(substring)

查找字符串中有没有substring里的内容,若有,则返回substring第一个字符在字符串中的下标,没有则返回-1

s.indexOf(“world”)

查找字符串s里是否包括substring里的内容

返回6

substring(index1,index2)

截取字符串中从下标index1开始到下标index2之前的内容。

不写index2或者index2为字符串长度时,默认为截取字符串下标index1后的全部内容。

若填写的index超过了字符串范围(即大于字符串长度)则报错

s.substring(6,10)

返回“worl”

charAt(index)

返回字符串中下标为index的字符

s.charAt(3)

返回“l”

总结

以上的五类变量是java中最基础的数据类型,其中int,double,string,boolean在代码编写的过程中尤为常见。由于篇幅限制,更多的数据类型,如array,arraylist等,我将会在后续的文章中进行更详细的讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值