//小白又来了,这篇博客给大家简单介绍一些java语言的基础知识;
注释概述及其分类
关键字的概述
标识符的概述及组成规则
常量的概述
变量的概述
类型 | 字节数 | 取值范围 |
---|---|---|
byte | 1(8bit) | -128 ~ 127 |
short | 2(16bit) | -2^15 ~ 2^15 - 1 |
int | 4(bit) | -2^31 ~ 2^31 - 1 |
long | 8(bit) | -2^63 ~ 2^63 - 1 |
类型 | 字节数 | 取值范围 |
---|---|---|
float | 4(32bit) | -3.403 x10^38 ~ 3.403x10^38 |
double | 8(64bit) | -1.798x10^308 ~ 1.798x10^308 |
整数默认是int类型的 , 浮点数默认是 double类型的
char | 2(16bit) | 0 ~ 2^16 - 1 = 65535 |
---|---|---|
boolean | 1 |
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
答:可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节;所以,Java中的字符可以存储一个中文汉字
class FZYSF{
public static void main(String[] args) {
byte c=10;
c=c+10;
System.out.println(c);/* 这个程序是错误的,因为java中默认整数数据为int型,
int到byte转化存在数据损失;*/
}
}
Java中的默认转换规则
(1): boolean类型不能转换为其他的数据类型
(2): byte,short,char—int—long—float—double
(3): byte,short,char之间不转换,他们参与运算首先转换为int类型
class FZYSF{
public static void main(String[] args) {
byte a=10;
a=(byte)(a+120);
System.out.println(a);//结果126
}
}
强制转换的格式
目标数据类型 变量名=(目标数据类型)(被转换的数据);
强制转换的注意事项
尽量不要使用强制类型转化,因为可能存在损失精度的问题。
算数运算符有哪些: + , - , * , / , % , ++ , --
[注] 整数相除只能得到整数,如果想得到小数,请使用浮点数;/获取的是除法操作的商;
%获取的是除法操作的余数;%运算结果的符号,取决于参与运算是左边的符号;
class YSF{
public static void main(String[] args) {
int a=10;
int b=3;
System.out.println(a/b); //3 两个整数相除,结果取得时商
System.out.println(a%b); //1 取余运算
}
}
++,--运算符的作用:
自加(++)自减(--)运算
++:自加。对原有的数据进行+1
--:自减。对原有的数据进行-1
单独使用:
放在操作数的前面和后面效果一样。(比较常见的用法)
参与运算使用:
放在操作数的前面,先自增或者自减,然后再参与运算。
放在操作数的后面,先参与运算,再自增或者自减。
eg:下面代码运行结果:
public static void main(String[] args){
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.printf(i);
System.out.printf(j);
System.out.printf(k);
}
/**结果:
4
1
11
*/
分析:
class HE{
public static void main(String[] args) {
//请分别计算出a,b,c的值?
int a = 10;
int b = 10;
int c = 10;
a = b++;//将b的值赋值给a,然后b自增为1;此时a为10,b为11,c为10
c = --a;//a先自减,然后赋值给c;此时a为9,c为9,b为11
b = ++a;//a先自增1,然后将a的值赋值给b,;此时a为10,b为10,c为9
a = c--;//将c的值赋值给a,然后c自减1;此时a为9,b为10,c为8
System.out.println(a);// 9
System.out.println(b);// 10
System.out.println(c);// 8
赋值运算符有哪些
=, +=,-=,*=,/=,%=
注意事项:
a:基本的赋值运算符:=
把=右边的数据赋值给左边。
b:扩展的赋值运算符:+=,-=,*=,/=,%=
+= 把左边和右边做加法,然后赋值给左边。
c: 赋值运算符要求左边的数据必须是一个变量
class HE{
public static void main(String[] args) {
//看下面的程序是否有问题,如果有问题,请指出并说明理由。
short s=1;
s = s+1;// 这个是错误的程序,因为java中整数默认为int型,从int转化为short存在数据损失;
short s=1;
s+=1;// 这个正确,意思是s加1,然后再赋值给s;
System.out.println(s);
}
}
关系运算符有哪些?
== ,!= , < , > , <= , >=
==:判断左右两边是否相等;
!=:判断左右两边是否不等;
注意事项:
无论你的操作是简单还是复杂,结果是boolean类型。
"=="不能写成"="。
逻辑运算符有哪些?
&(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
&(并且): 在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6;
【结论】:&逻辑与:有false则false
|(或者): 表示 2>1 | 3>2 //结果为true
【结论】:|逻辑或:有true则true
!(非): 把结果取反,true变false ,false变true;
【结论】:!逻辑非:非false则true,非true则false
^(异或): boolean flag = true ^ true;//false
flag = false ^ false;//false
flag = true ^ false;//true
flag = false ^ true;//true
【结论】:^逻辑异或:相同为false,不同为true
&&(短路与),||(短路或):& 和 && ,| 和 || 他们的运算结果没有任何区别,区别在于运算效率上;
什么是运算效率?
& 链接的两端都要去进行运算,将两边的结果根据 &逻辑与:有false则false的规则判断最终结果;
&& 连接时当左端为false了,右端就不进行运算了,最终结果就为false ;当然你左端为true了那右端,还必须运算,最终根据 逻辑与 的规则判断最终结果;
| ,|| 同理:| 链接的两端都要运算
|| 当左端为true了,右端就不进行运算了,最终结果就为true,只有左端为false时右端还需要进行运算;
逻辑运算符一般用于连接boolean类型的表达式或者值,逻辑运算符的运算结果是布尔类型;
//有关 & 和 && 运算符的例子:
public class Demo1{
public static void main(String[] args) {
int a=1;
int b=2;
boolean flag1=a==1 & (b++)>2;
System.out.println(flag1);//结果是false,&左边为true,右边为false,所以flag1结果为false
System.out.println(b);//结果是3,b自增1
boolean flag2=a>0 && (b++) > 2;
System.out.println(flag2);//结果是true,&&左边为true,右边为true,所以flag2结果为true
System.out.println(b);//结果为4,因为&&左边为true,所以对&&的右边也要进行运算,b再次自增1
}
}
//有关 | 和 || 运算符的例子:
public class Demo2{
public static void main(String[] args) {
int num1=10;
int num2=20;
boolean f=num1==10|++num2>20;// | 的左边为true,右边为true,结果为true,num2为21
f= num1 <= 10 || ++num2 > 20;//给f重新赋值,||左边为true,所以右边不需要进行计算,故f的最终结果为true
System.out.println(f);//结果是:true
System.out.println(num2);//结果是:21
}
}
位运算符有哪些?
&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)‘
&:有0则0
|:有1则1
^:相同则0,不同则1
位异或运算符的特点:
一个数据被另一个数据位异或两次,该数本身不变;自己位异或自己是0 如:8^8 结果是0;
~:按位取反 0变1 1变0
位运算是直接对二进制补码进行运算:
<<:左移 空位补0,被移除的高位丢弃。
>>:右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。
>>>:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。
【结论】
<< : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80;
>> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5
//位运算符的例子:
public class Demo2{
public static void main(String[] args) {
int num1=3;
int num2=-2;
System.out.println(num1<<2);/* 3的补码:0 0000011
左移2位:0 0001100(空位补0)
结果:12 */
System.out.println(num2>>2);/* -2的补码:1 1111110
右移两位:1 1111111(高位补1)
结果:1 0000001 它是-1的原码,所以结果为-1 */
}
}
三元(三目)运算符的格式:
(关系表达式) ? 表达式1 : 表达式2;
int a=(10>20)?30:50; 结果是: a=50
三元运算符的执行流程:
先计算关系表达式的值,如果为true,运算后的结果是表达式1;
如果为false,运算后的结果是表达式2;
//用三元运算符判断3个数中的最大数:
public class Demo2{
public static void main(String[] args) {
int a=10;
int b=20;
int c=30;
int d=(a>b)?a:b;
int e=(d>c)?d:c;
System.out.println("最大值是"+e);
}
}
class Tow{
public static void main(String[] args) {
System.out.println("hello" + 'a' + 1);//helloa1
System.out.println('a' + 1 + "hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
}
}
这个代码段我们可以看到“+”当连接符使用
有关ASCII码表的概述
记住三个值:
‘0’ 48
‘A’ 65
’ a’ 97,其他相关的我们可以推出来;
还有空格 对应的值为32
//这篇给大家简单介绍了一些java语言的基础知识,有错误望指正,下篇再见,谢谢…