黑马程序员————JAVA语言基础

来源:互联网 发布:java bigdecimal加 号 编辑:程序博客网 时间:2024/06/14 12:59

------- http://www.itheima.com" target="blank">android培训、http://www.itheima.com" target="blank">java培训、期待与您交流! ----------

前奏:
1:关键字
(1)被Java语言赋予特定含义的单词
(2)特点:
全部小写。
(3)注意事项:
A:goto和const作为保留字存在。
B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记
 
2:标识符
(1)就是给类,接口,方法,变量等起名字的字符序列
(2)组成规则:
A:英文大小写字母
B:数字
C:$和_
(3)注意事项:
A:不能以数字开头
B:不能是java中的关键字
C:区分大小写
(4)常见的命名规则(见名知意)
A:包全部小写
单级包:小写
举例:liuyi,com
多级包:小写,并用.隔开
举例:cn.itcast,com.baidu
B:类或者接口
一个单词:首字母大写
举例:Student,Demo
多个单词:每个单词首字母大写
举例:HelloWorld,StudentName
C:方法或者变量
一个单词:首字母小写
举例:name,main
多个单词:从第二个单词开始,每个单词首字母大写
举例:studentAge,showAllNames()
D:常量
全部大写
一个单词:大写
举例:PI
多个单词:大写,并用_隔开
举例:STUDENT_MAX_AGE
 
3:注释
(1)就是对程序进行解释说明的文字
(2)分类:
A:单行注释//
B:多行注释/**/
C:文档注释(后面讲) /** */
(3)注释的作用
A:解释说明程序,提高了代码的阅读性。
B:可以帮助我们调试程序。
后面我们会讲解一个更高端的一个调试工具
 
4:常量
(1)在程序执行的过程中,其值不发生改变的量
(2)分类:
A:字面值常量
B:自定义常量(后面讲)
(3)字面值常量
A:字符串常量 "hello"
B:整数常量12,23
C:小数常量12.345
D:字符常量'a','A','0'
E:布尔常量true,false
F:空常量null(后面讲)
(4)在Java中针对整数常量提供了四种表现形式
A:二进制由0,1组成。以0b开头。
B:八进制由0,1,...7组成。以0开头。
C:十进制由0,1,...9组成。整数默认是十进制。
D:十六进制由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
 
5:进制转换
(1)其他进制到十进制
系数:就是每一个位上的数值
基数:x进制的基数就是x
权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
结果:系数*基数^权次幂之和。
(2)十进制到其他进制
除基取余,直到商为0,余数反转。
(3)进制转换的快速转换法
A:十进制和二进制间的转换
8421码。
B:二进制到八进制,十六进制的转换
 
6:变量
(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
(2)变量的定义格式:
A:数据类型 变量名 = 初始化值;
B:数据类型 变量名;
  变量名 = 初始化值;
 
7:数据类型
(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组。
(3)基本数据类型
A:整数占用字节数
byte1
short2
int 4
long8
B:浮点数
float4
double8
C:字符
char2
D:布尔
boolean1
注意:
整数默认是int类型,浮点数默认是double。
长整数要加L或者l。
单精度的浮点数要加F或者f。
 
8:数据类型转换
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
 
 
 
 
 
一、算数运算符:+(加)、-(减)、*(乘)/(除)%(取余) ++(自增1) --(自减1)
10 / 3 == 3、10 % 3 ==1
10 / 0 : 运行时异常;
10.0 / 0 :Infinity(无穷)不是异常
10 % 0 : 运行时异常
10.0 % 0 : NaN(Not A Number)不是异常
-10 % -3 ==-1 、10 % 3 ==1
-10 % 3==-1、10 % -3==1
如果表达式中,只做++或--一件事情,那么前++/--和后++/--效果一样的;但如果表达式中做多件事情:前++/--:先自增/自减,然后再参与表达式的其它运算;后++/--:先参与表达式的运算,然后在自增/自减;
二、赋值运算符
=:执行顺序,从右至左,并且最后返回变量;
+= 、  -= 、  *= 、 /=、 %=
特点:带隐式强制转换;
byte b1 = 10;
b1 = b1 + 20;//编译错误
b1 += 20;//OK的-->b1 = (byte)(b1 + 20);
三、关系运算符:==:判断是否相等;!=:判断是否不等;<:左操作数是否小于右操作数;
>:左操作数是否大于右操作数;<=:左操作数是否小于或者等于右操作数;
>=:左操作数是否大于或者等于右操作数;
四、逻辑运算符:
1.&&(语意:并且):两边都为true,结果为:true;
2.||(语意:或者):有一边为true,结果为true;
3.!(语意:不是):!true:false;!false:true
 
五、运算符:
1.位运算符:<<(左移);>>(有符号右移);>>>(无符号右移);&(按位与):两位都是1,结果为1;| 按位或):有1位为1,结果为1;^(按位异或):两位相同结果为0,否则为1;
~(取反):1变0,0变1
2.位运算符的考点:
1).高效的计算某数 * 2 : <<
2).高效的计算某数 / 2 : >>
3).&、|同&&、||的区别:
逻辑与&&、||:具有短路行为;
4).将两个变量的值交换:三次异或;
3.三目运算符:
条件表达式 ? 表达式1 : 表达式2;
六、键盘录入:
步骤:
1.import java.util.Scanner;
2.Scanner sc = new Scanner(System.in);
3.int : int num = sc.nextInt();
  double : double d = sc.nextDouble();
  String : String s = sc.next();
七、选择结构:
1.if语句:
1)格式1:
if(条件表达式){
}
 注意:如果if体内只有一条语句,可以省略大括号,但不建议;
2)格式2:
if(条件表达式){
//为true,执行这里
}else{
//为false,执行这里
}
3)格式3:
if(条件表达式){
}else if(条件表达式2){
}else if(条件表达式3){
}else{
}
2.switch语句:
1).格式:
switch(表达式){
case 值1:
//代码
break;
case 值2:
//代码
break;
default:
//代码
break;
}
2).注意事项:
1."表达式"可以产生的值:byte,short,int,char,枚举(JDK5以后),String(JDK7以后)
2.case语句后跟"常量表达式",不能是"变量";而且不能出现相同的常量值;
3.break;语句"不是必须的"。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。
4.多个case之间,没有顺序关系;
5.default语句"不是必须的"。可以不写,它就相当于多重if语句中最后的else。
6.default语句和case语句"没有顺序关系"。
 
八、循环结构
1.while循环:
while(条件表达式){
}
2.do_while循环:
do{
}while(条件表达式);
3.for循环:
for(定义循环变量表达式  ;   条件表达式    ;  增量表达式){
}
4.说明:
1)三个表达式都不是必须的;但分号必须要写;
2)执行顺序:
a.定义循环变量表达式;b.条件表达式;c.进入循环;
d.增量表达式;e.条件表达式;f.进入循环;j增量表达式
    5.三种循环的区别:
1)只有do_while循环是先无条件的进入循环体执行一次,然后再判断;
  while和for循环都先判断,后进入循环体;
2)一般对于有明显的遍历范围的,建议首选for循环。
          对于没有明显遍历范围的,一般使用while。
    对于循环体中的内容,如果需要先执行一次,再判断,那么可以使用do_while
 
九、方法:
1.方法的作用:代码复用;
2.方法定义的格式:
修饰符返回值类型方法名([形参列表]){
}
修饰符:目前只需要写:public static
返回值类型:可以是任何的Java类型(基本数据类型、引用数据类型)。
                           如果没有返回值,这里要写void
方法名:自定义标识符;
形参列表:可以没有,但是一定写一对小括号。
  如果有,每个形参是由:数据类型 形参名
  多个形参,中间用逗号隔开;
    3.方法内,可以写什么?
1).定义变量; 2).if语句,switch语句;3).各种循环语句;
    总之:除了不能定义方法,其它都可以;
4.方法的注意事项:
1).方法不调用不执行;
2).方法与方法是平级关系,不能嵌套定义;
3).方法定义的时候参数之间用逗号隔开;
4).方法调用的时候不用再传递数据类型;
5).如果方法有明确的返回值,一定要有return带回一个值;
5.方法的重载:
1).在一个类中,可以定义多个同名的方法,但形参列表不能完全相同;
2).方法重载,跟返回值类型无关;跟形参名无关;
 
6.方法的值传递和引用传递:
a.当一个方法接收的是一个"基本数据类型"时,调用方法传递实参时,是将"值"复制到方法内;在方法内,如修改其值,修改的只是"副本",原值不会被改变;
b.当一个方法接收的是一个"引用数据类型"是,调用方法传递实参时,是将"引用"复制到方法内;在方法内,是可以通过这个引用修改"堆"空间的内容,即使方法结束,修改会影响到原堆中的值;
 
 
十、数组:
1.一维数组:
1).定义的格式:
a.动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];
b.静态初始化:
    数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,.....,值n};
数据类型[] 数组名 = {值1,值2,值3.....值n};
2).数组是"引用数据类型",变量存储的是"引用(地址)";
3).当new(实例化)一个数组对象时,其"值"的空间是在堆中分配的,对于各种数据类型,都会分配一个默认值:
整数:0
小数:0.0
字符:'\u0000'
布尔:false
String:null
其它引用类型:null
4).数组的访问方式:使用:数组名[索引]
 
 
2.二维数组:
1).定义的格式:
数据类型[][] 数组名 = new 数据类型[第一维的长度][第二维的长度];
左边也可以写成:
数据类型 数组名[][]
数据类型[] 数组名[]
数据类型[][] 数组名 = new 数据类型[][]{{值1,值2},{值3,值4},{值5,值6,值7}};
数据类型[][] 数组名 = {{值1,值2},{值3,值4},{值5,值6,值7}};
 
0 0
原创粉丝点击