Java语言基础组成
1.关键字
2.标识符
(1)就是给类,变量,方法起名字。
(2)组成规则:
由数字0-9,英文大小写字母,$以及_组成。
(3)注意事项:
A:只能有组成规则规定的内容组成。
B:不能以数字开头。
C:不能是Java中的关键字。
A:包(文件夹,用于区分同名的类)D:区分大小写。
全部小写。如果多级包,用.分开。
举例:
com一级包
tuozou.interview二级包
注意: www.tuozou.com(域名反写)
B:类和接口
如果是一个单词,首字母大写。
举例:
Demo,Test,Student
如果是多个单词,每个单词的首字母大写。举例:
HelloWorld,StudyJava
C:变量和方法
如果是一个单词,首字母小写。
举例:
main(),name,age.show().method()
如果是多个单词,从第二个单词开始每个单词的首字母大写。
举例:
showName(),studentName()
D:常量
全部大写,如果多个单词组成,用_连接。
举例:
PI,STUDENT_MAX_AGE
3.注释
注释:就是对程序的解释性文字。
注释的分类:
A:单行注释
a:以//开头,以回车结束。
b:单行注释是可以嵌套单行注释的。
B:多行注释
a:以/*开头,以*/结束。
b:多行注释是不可以嵌套多行注释的,但可以嵌套单行注释。
C:文档注释(了解)
注释的作用:将来被Javadoc工具解析,生成一个说明书。
A:解释程序,提高程序的阅读性。
B:可以调试错误。
对于单行注释和多行注释,被注释的文字,不会被JVM(Java虚拟机)解释执行。
对于文档注释,是Java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的
说明文档。
注释是一个程序员必须具有的良好编程习惯。
初学者编写程序可以养成习惯:先写注释再写代码。
将自己的思想通过注释先整理出来,在用代码去体现。
因为代码仅仅是思想的一种体现形式而已。
作用:
1、注解说明
2、调试程序
格式:
单行注释://
多行注释: /* */
文档注释: /** */
建议:写代码之前写需求,思路,步骤,养成一个良好的习惯,以后一旦思想确定,后面写代码就是行云流水。
如下一个Hello 黑马程序员的小程序:
/*
1.需求:
编译一个Hello 黑马程序员!!的小程序
2.思路:
1).通过Java关键字class定义一个类
2).通过Java特殊字main定义一个主函数
3).定义一个输出语句,打印下Hello 黑马程序员!!
3.步骤:
1).class Demo 定义一个类
2).public static void main(String[] args) 定义一个主函数
3).System.out.println("Hello 黑马程序员!!");定义一个输出语句
*/
//创建一个类。
class Demo{
//主函数是程序的入口。
public static void main(String[] args){
}//输出语句,可以打印小括号内容。
System.out.println("Hello 黑马程序员!!");
}
4.常量和变量
常量:表示不能改变的数值。
(1)在程序的运行过程中,其值是不可以发生改变的量。
(2)常量的分类:
1:整数常量
12,-23
2:小数常量
12.5,-65.43
3:字符常量
'a','A','0'
4:字符串常量
"Hello"
5:布尔常量
true,false
6:空常量(后面讲)
自定义常量(后面讲)null
(3)常量可以直接被输出。
(4)进制
(1)是一种进位的方式。X进制,表示逢x进1。(2)Java中整数常量的表示
A:二进制 由0,1组成。以0b开头。JDK 1.7以后的新特性。B:八进制 由0-7组成。以0开头。C:十进制 由0-9组成。默认就是十进制。D:十六进制 由0-9,A-F(不区分大小写)组成,以0x开头。
(3)进制转换:
A:其他进制转十进制
系数:就是每一位上的数据。基数:X进制,基数就是X。权:在右边,从0开始编号,对应位上的编号即为该位的权。结果:把系数*基数的权次幂相加即可。
B:十进制到其他进制
除基取余,直到商为0,余数反转。
变量:就是讲不确定的数据进行存储,也就是需要在内存中开辟一个空间。
(1)程序的运行过程中,在指定范围内发生改变的量。
(2)格式:
格式1:
数据类型 变量名 = 初始化值;
格式2:
数据类型 变量名;
变量名 = 初始化值;
举例:
方式1:
byte b = 10;
方式2:
byte b;
b = 10;
理解:变量就如同数学中的未知数。
数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
数据分类
1)基本类型:4类8种。
整型:占用字节
布尔型:byte(1)short(2)int(4)long(8)
boolean(1) 不明确。可以认为是1个字节。
只有俩字结果,一个是true,另一个是false。
字符型:
char(2)
浮点型:
float(4)double(8)
2)引用类型:类,接口,数组。(先了解)
注意:
整数默认是int类型。long类型需要加L或者l后缀。
浮点数默认是double类型。float类型需要加F或者f后缀。
类型转换
1、boolean类型不参与转换。(因为boolean值是常量,默认只有俩个值,要么true,要么false)
2、隐式转换(从小到大)
自动类型提升,从小到大的提升。
(byte,short,char) --> int --> long --> float --> double
3、强制转换(从大到小)
强制类型转换,从大到小的转换。
intb;b=(byte)(b+2)
格式:
(数据类型)数据;
表达式的数据类型自动提升
所有byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型。
如果一个操作数是float型,计算结果就是float型。
如果一个操作数是double型,计算结果就是double型。
分析:
System.out.println(‘a’)与System.out.println(‘a’+1)的区别。
System.out.println(‘a’)打印的是a。
System.out.println(‘a’+1)打印的是98,自动类型提升,把a转换成ASCII编码值(97)与1相加。
变量的什么时候定义?
当数据不确定时,需要对数据进行存储时,就定义一个变量来完成存储动作。
转义字符
\n :换行
\b:退格
\r:按回车
\t:制表符
面试题:
byte b = 4;b = 3+7;
System.out.println(b);//打印出来是10
------------------------------------------------
byte b = 4;byte b1 = 3;byte b2 = 7;
b = b1 + b2;
System.out.println(b);
提示可能损失精度
byte b=4; 编译器在编译的时候,右边默认是整型,但是他会判断.这数字在不在byte字节这个范围之内(-128~127),如果在的话,把这个4做了一个默认的强转,把最后一个字节赋到b中,这时b是在byte范围内所以编译不会报错。
b1和b2是变量,是不确定的值,不能检查。
int x;
int x1 =Integer.MAX_VALUE;//2147483647Z最大数
int x2 = 2;
x = x1+x2;
System.out.println(x);
不出错,打印出来是负数。
int是默认类型,一旦超出范围,底层有强制转换过程,只保留自己原有位,高位全舍弃。
5.运算符
(1)就是把常量和变量连接的符号,一般参与运算使用。
(2)分类:
算术运算符 +,-,*,/,%,++,--
+):正号,加法,字符串连接符。
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
%):取得余数
左边如果大于右边,结果是余数。
左边如果小于右边,结果是左边。
左边如果等于右边,结果是0。
正负号跟左边一致。
++与--:
++ 其实相当于把数据+1
- - 其实相当于把数据-1
单独使用:在数据的前后,结果一致。
参与操作使用:
如果在数据的后边,数据先操作,在++/--
如果在数据的前边,数据先++/--,在操作。
赋值运算符 =,+=,-=,*=,/=,%=
int a = 10;
把10赋值给int类型的变量a。
a += 20;
把左边和右边的和赋值给左边。
注意事项:
a = a + 20;
a += 20;
结果是等价的,理解不是等价的。
因为+=这种运算符,内含了强制类型转换功能。
比如:
short s = 2;
s+=3;
等价于 s = (short)(s+3);
关系运算符 ==,!=,>,>=,<,<=
特点:关系运算符的结果都是boolean类型。
请千万注意:== 不要写成 =
逻辑运算符
&与运算 |或运算 ^异或运算 !非运算 &&短路与运算 ||短路或运
&:符号的运算特点:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
&:运算规律:
&运算的两边只有有一个是false,结果肯定是false。
只有两边都为true,结果才是true。
|: 符号的 运算特点:true & true = true;
true & false = true;
false & true = true;
false & false = false;
|:运算规律:
|运算的两边只要有一个是true,结果肯定是true。
只有两边都为false。结果是false。
^:异或 :和或有点不一样。
^:运算特点。
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^异或的运算规律:
^符号的两边结果如果相同,结果是 false。
两边的结果不同,结果是true。
!:非运算,判断事物的另一面。
!true =false
!false=true;
!!true=true;
面试题:
&&和&运算的结果是一样的。但是运算过程有点小区别。
&:无论左边的运算结果是什么,右边都参与运算。
&&:当左边为false时,右边不参与运
||和|运算的结果是一样的。但是运算过程有点小区别。
|:无论左边的运算结果是什么,右边都参与运算。
||:当左边为true时,右边不参与运算的。
位运算是直接对二进制进行运算<<左移运算 >>右移运算 >>>无符号右移运算 &与运算 |或运算 ^异或运算 ~反码运算
<<左移几位其实就是该数据乘以2的几次方。左移:可以完成2的次幂运算
>>右移几位其实就是该数据除以2的几次幂。右移:对于高位出现的空位,原来高位是什么就用什么补这个空位。
>>>:无符号右移:数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
^一个数异或同一个数两次,结果还是这个数。
练习:
对两个整数变量的值进行互换(不需要第三方变量)
开发时,使用第三方变量的形式,因为阅读性强。
int a = 3,b = 5, c;
c = a ;a = b ;b = c ;
Sytem.out.println("a="+a+",b="+b);
这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换。数据会变化。
a= a + b;//a = 3 + 5;a = 8;
b= a - b;//3+5-5 = 3;b = 3;
a= a - b;//3+5-3 = 5;a = 5;
面试的时候用。
a= a ^ b;//a = 3 ^ 5;
b= a ^ b;//b = (3^5)^5; b = 3;
a= a ^ b;//a = (3^5)^3; a = 5;
三元运算符
格式:(条件表达式)?表达式1:表达式2 ;
如果条件为true,运算后的结果是表达式1,
如果条件为flase,运算后的结果是表达式2
示例:获取两个数中大数。
int x = 3, y = 4, z;
z = (x>y) ? x:y; //z变量存储的就是两个数的大数。