Java语言基础
//小白又来了,这篇博客给大家简单介绍一些java语言的基础知识;
代码中的注释、关键字及标识符
注释概述及其分类
- 什么是注释:
用于解释说明程序的文字。 - 注释的分类及讲解:
(1): 单行注释 格式: // 注释的文字
(2): 多行注释 格式: /* 注释的文字 /
(3): 文档注释 格式: /* 注释的文字 */ - 注释的作用:
解释说明程序;
帮助我们调试程序
关键字的概述
- 什么是关键字
就是被java语言赋予特殊含义的单词。 - 关键字的特点
组成关键的字母都是小写 - 常见关键字
class,public,static,void … - 关键字的注意事项
(1): goto和const是java语言的保留字
(2): 类似与editplus这样的高级文本编辑器对关键字都是有颜色变化的
标识符的概述及组成规则
- 什么是标识符?
就是给类,接口,方法,变量,常量等起名字时使用的字符序列 - 标识符的组成规则:
(1): 英文的大小写字母
(2): 数字字符
(3): $和_ - 标识符注意事项:
(1): 不能以数字开头
(2): 不能是java中的关键字
(3): 区分大小写 - 常见的命名规则:
包(就是文件夹,它的存在是为了解决我们同一个目录下不能同时存在两个相同名称的文件。)
字母都是小写 itcast
类或者接口:
一个单词: 首字母大写,其余字母小写 Student , Teacher , Spring , Struts , Hibernate
多个单词: 每一个单词的首字母都是大写,其余字母小写 StudentName , UserLoginController
方法或者变量:
一个单词: 字母全是小写 name , age
多个单词: 从第二个单词开始,首字母大写,其余字母小写 getName , getAge
常量:
一个单词: 字母全是大写 NAME , AGE
多个单词: 字母全是大写,每一个单词之间使用 _ 隔开 STUDENT_MAX_AGE
常量及变量
常量的概述
- 什么是常量?
就是在程序的执行过程中其值不发生改变的量。 - Java中常量的分类 :
(1):字面值常量
(2):自定义常量(面向对象部分讲解) - 字面值常量的分类:
(1): 字符串常量 用双引号括起来的内容 “HelloWorld” ,“Hello”
(2): 整数常量 所有整数 12,23
(3): 小数常量 所有小数 12.34,56.78
(4): 字符常量 用单引号括起来的内容 ‘a’,‘A’,‘0’ (注意事项:单引号中只能是单个字母,单个数字,单个符号)
(5): 布尔常量 较为特有,只有true和false
(6): 空常量 null(数组部分讲解) - Java针对整数常量提供了4种表现形式
(1):二进制
(2):八进制
(3):十进制
(4):十六进制
变量的概述
- 什么是变量?
在程序执行的过程中,在某个范围内其值可以发生改变的量(例如:苹果的价钱),变量其实是内存中的一小块区域; - 为什么要定义变量?
用来不断的存放同一类型的常量,并可以重复使用 - 变量的定义格式:
数据类型 变量名 = 变量值 - 变量使用的注意点:
a:作用域问题
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
b:初始化值问题
没有初始化值不能直接使用
c:在一行上建议只定义一个变量
可以定义多个,但是不建议
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
*/
分析:
int i = 1; i = i++;
int j = i++;
int k = i + ++i * i++;
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语言的基础知识,有错误望指正,下篇再见,谢谢…