大家好,我是平凡郭先生。
因为刚刚从学校出来不久,很多知识点还是有缺漏,所以打算从头开始梳理一遍,今天咱们就一起看看JAVA的语言基础
一、变量
1.什么是变量
在某个范围内,它的值可以改变
2.定义的格式
数据类型 变量名 = 变量值;
3.变量的分类
局部变量&成员变量(全局变量)
相同点:
1.都遵循定义格式的规范来定义变量
2.都有作用的范围
不同点:
1.
位置不同
成员变量位置在类内方法外
局部变量的位置在方法内,方法的形参,代码块
2.修饰符不同
3.初始化值不同
成员变量:如果在声明是不显示赋值,那么不同数据类型有不同的默认初始化值,
byte , short, int , long = 0;
float , double = 0.0;
char = 空格;
boolean= flase;
引用数据类型 = null;
局部变量没有初始化值;
4.内存位置不同
成员变量存在于堆空间中,局部变量存在于栈空间中
二、数据类型
1.Java中数据类型的分类
Java中数据类型就分两种,一种是"
基本数据类型"另一种是"
引用
数据类型"(这篇文章先不说,等写到封装在写)
2.基本数据类型(4类8种)
整数型
byte 占一个字节 取值范围:-128到127
(-2的7次方到2的7次方-1)
short 占两个字节 取值范围:
-32768~32767
(-2的15次方到2的15次方-1)
int 占四个字节 取值范围:
-2147483648~2147483647
(-2的31次方到2的31次方-1)
long 占八个字节 取值范围:
(-2的63次方到2的63次方-1)
浮点型
float 占四个字节
取值范围:-3.403E38~3.403E38 单精度
double 占八个字节 取值范围:-1.798E308~1.798E308 双精度
字符型
char 占两个字节 取值范围:0~65535
布尔型
boolean 他就有两个值,true(真)和false(假)
3.基本数据类型的赋值(赋值时注意取值范围)
整数型
byte b = 10;
short s = 20;
int i = 30;
long l = 123456789L; //如果long类型后面加L进行标识最好加大L,因为小l太像一了
浮点型
float f = 12.3F;
double d = 12.3;//小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加
字符型
cahr c = 'a'; //char类型赋值的时候必须要用英文单引号
布尔型
boolean b1 = true;
boolean b2 = false;
4.自动类型转换(隐式转换)和强制类型转换(也叫显示转换)
数据类型转换之
自动类型转换
int x = 3;
byte b = 4;
x = x + b;
System.out.println(x);
数据类型转换之
强制类型转换
int x = 3;
byte b = 4;
b = (byte)(x + b);
System.out.println(x);
因为在用到这块知识的时候Eclipse自动会提醒,所以我自己也就没太注意啦;下面这段话是我
百度查的
因为java是 强类型语言
,由强类型向弱类型转换需要强制转换,而由弱类型向强类型转换则系统自动转换。比如:double 类型相比int类型是属于强类型,则由double类型的数据向int类型数据转换就需要强制转换,反之则自动转换。另外八大基本数据类型的强弱关系如下:byte。
在强转这一块有一经常出现的面试题:
//面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
1.
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
答案: 这段代码在编译的时候就会报出"可能损失精度"的错误,这个问题可以从两个方面解释
1,byte与byte(或short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型
2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围
2.
byte b = 4+3;
答案: 这段代码不会报错,因为在编译的时候已经把"4+3"的结果算出来了,并且与byte的取值范围进行了比较,这个动作也就是"Java编译器的常量优化机制"
三、运算符
1.算数运算符
+ 号 : 在java中有三种作用,代表正号,做加法运算,字符串的连接符
/ 号 : 这个符号就相当于数学中的÷号,其结果是整数,也就是两个数的商 比如: 7/3 = 2
% 号 : 获取的是除法操作的余数,比如:7%3 = 1
++(自加)号和--(自减)号 :
a:单独使用:
放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
c:
当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加1(--同理)
当++在变量前面的时候,会先自身加1,然后在将结果赋值(--同理)
2.赋值运算符
+= 、-=
这个我也不知道怎么那文字解释,就用一段代码吧
int a = 3;
a += 4;
上面这段代码执行结果和a = a + 4的执行结果一样,都是等于7,其实a += 4;可以与a = a+4;划等号
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
1.
short s=1;
s = s+1;
System.out.println(s);
答案:当short与int进行运算的时候,会提升为int类型,两个int类型相加的结果也是int类型,会报"可能损失精度"的错误
short s=1;
s+=1;
//s = (short)(s + 1);
System.out.println(s);
答案:这个没有问题,因为s += 1 ;相当于s = (short)(s + 1);
3.关系运算符(返回值为boolean类型)
==(等于),!=(不等于),>(大于),>=(大于等于),<(小于),<= (小于等于)
三目运算:
a>b?a:b
上面的代码可以看成两段,从?号将代码分开,也可以将?号看成"如果"的意思。如果a > b 的结果为true,则取 : 号前的值;如果a > b的结果为false,则取 : 号后的值