:victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory:
1.JDK,JRE,JVM的作用和区别?
JDK:保证Java语言的开发。包含JRE和tools(开发工具)。
JRE:保证Java语言运行。包含JVM和class library(核心类库)。
JVM:保证Java语言跨平台。为不同的操作平台提供一个JVM。
问题:Java语言是跨平台的吗?
是。
JVM是跨平台的吗?
不是。采用假设法即可判断。如果JVM是跨平台的,那就不用为不同的
操作平台提供不同的JVM了,只需要一个就行了。显然实际不是这样的。
2.为什么要配置Path,以及怎么配置?
为什么要配置Path?
其实我们可以直接在JDK的安装目录bin下,写Java程序,并运行。
但是,这样做,不好也不安全。为了保证我们在任意的目录下可以
使用javac和java命令,我们才去配置Path环境变量。
怎么配置?
A:直接把目录配置过来
path:D:\develop\Java\jdk1.7.0_51\bin;以前的path
B:配置JAVA_HOME,修改path。
JAVA_HOME : D:\develop\Java\jdk1.7.0_51
path : %JAVA_HOME%\bin;以前的path
3.为什么要配置classpath?
为了保证在任意目录下去使用class文件。模拟path原理,java提供
了一个classpath。
4.关键字
(1)在Java中被赋予了特殊含义的单词。
(2)特点:全部小写。
5.标识符
(1)就是给类,变量,方法等起名字。
(2)组成规则:
A:由数字,字母及下划线,$组成。
B:不能以数字开头。
C:不能和关键字重名。
(3)命名规则:
见名知意,驼峰命名。
A:包
全部小写,如果多级包,用 . 分开。
举例:
package com;
package cn.itheima;
域名反转。
www.itheima.com
com.itheima....
B:类和接口
如果是一个单词,首字母大写。
举例:Hello,Demo,Test,Inter
如果是多个单词,每个单词的首字母大写
举例:HelloWorld,StudentDemo
C:方法和变量
如果是一个单词,首字母小写。
举例:name,age,show()
如果是多个单词,从第二个单词开始的每个单词首字母大写
举例:studentName,setName(),getAge()
D:常量
全部大写,如果多个单词,用_连接
举例:NUMBER,PI,STUDENT_MAX_AGE
6.注释:
(1)对代码进行解释说明的文字。
(2)分类:
A:单行注释 //
B:多行注释 /* */
C:文档注释(javadoc工具) /** */
(3)好处:
A:对代码解释说明。
B:调试错误。
7.常量
(1)就是在程序运行的过程中,其值不发生改变的量。
(2)分类:
字面值常量:
整数常量
小数常量
字符常量
布尔常量
字符串常量
空常量 null
自定义常量:
final
(3)Java中对整数常量的表现形式:
二进制:(JDK7新特性)
八进制:
十进制:
十六进制:
8.变量
(1)就是在程序运行过程中,其值发生改变的量。
(2)格式:
数据类型 变量名 = 初始化值;
9.数据类型
(1)分类:
基本类型:4类8种
整型: 字节
byte 1
short 2
int 4
long 8
浮点型:
float 4
double 8
布尔型:
boolean 1
字符型:
char 2
(默认)整型:int
浮点型:double
引用类型:
接口
类
数组
10.类型转换
(1)数据参与运算:
要求类型一致
(2)分类:
隐式转换:从小到大
A:boolean不参与
B:遵循如下规则
byte,short,char-->int-->long-->float-->double
为什么long 8个字节转换成float 4个字节?
浮点数据的存储和整数不一样。
强制转换:从大到小
这种做法一般不推荐。因为会有数据的精度损失。
例题:
short s = 5;
s=s+2;
s+=2;
有什么区别?
s=s+2 //编译失败,因为s会被提升为int类型,运算后的结果还是int类型。
//无法赋值给short类型。
s+=2 //编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
11.运算符
(1)算数运算符
+,-,*,/,%,++,--
+:加法,正数,字符串连接符。
(2)赋值运算符
=,+=,-=,/=...
A:把左右两边的结果赋值给左边,左边是一个变量。s+=2;
B:隐藏了强制类型转换
上个例题中编译通过的 s+=2;//s=(short)(s+1);
(3)比较运算符
==,!=,>,>=,<,<=
运算结果是boolean类型。
(4)逻辑运算符
&,|,^,!,&&,||
^:异或,同为假,异为真
常用的有:!,&&,||
(5)位运算符
(6)三元运算符
表达式?值1:值2
首先计算表达式的值,看其结果:
true:值1
false:值2
(7)面试题:数据交换
int a = 10;
int b = 20;
开发用:使用第三方变量
int temp = a;
a = b;
b = temp;
面试:位异或运算符
左边:a,b,a
右边:a^b
a = a ^ b;
b = a ^ b;
c = a ^ b;
12.语句
(1)顺序结构
从上往下执行。
(2)选择结构
A:if结构
a:第一种结构
if (条件表达式){
语句体;
}
执行流程:
如果表达式为true,执行语句体;否则,不执行。
b:第二种结构
if (条件表达式){
语句体1;
} else{
语句体2;
}
执行流程:
如果条件表达式为true,执行语句体1;
否则,执行语句体2;
c:第三种结构:
if (条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}else if(条件表达式3){
语句体3;
}
...
else {
语句n;
}
执行流程:
从第一个条件表达式开始判断,遇到true,就执行对应的语句体。
如果都没有,最终执行语句n。
注意事项:
A:任何if语句,本身代表的是一条语句。
B:if语句控制的语句体,可以不写{}。
但是,如果if语句要控制多条语句,必须加{}。
推荐:永远加{}
C:条件表达式无论简单还是复杂,结果肯定是boolean类型。
D:注意,下面两个东西,一般不同时使用
;和{}
B:switch结构
格式:
switch(表达式) {
case 值1:
语句1;
break;
case 值2:
语句2;
break;
case 值3:
语句3;
break;
...
default:
语句n;
break;
}
执行流程:
首先计算表达式的值。
接着依次和case进行比较,遇到想等,就执行对应的语句,并结束。
如果没有匹配的,执行default。
注意事项:
a:表达式的取值一般来说是这几个:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
b:case和default有没有顺序?
有:执行顺序关系。
没有:位置关系。
c:break是否可以不要
最后一个匹配的break可以直接不要。
d:switch语句的结束:
遇到break。
执行到最后。
案例:
/*
一年12月,4个季度
3\4\5 春季
6\7\8 夏季
9\10\11 秋季
12\1\2 冬季
根据指定的月份,得到对应的季节
*/
class SwitchTest {
public static void main(String[] args) {
//输入一个月份
int month = 5;
//使用switch语句
switch (month) {
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("不是有效月份");
}
}
}
13.循环语句
(1)for循环:
for(初始化条件表达式;判断条件表达式;增量条件表达式){
循环体;
}
执行流程:
A:首先执行初始化条件表达式
B:接着执行判断条件表达式,根据返回值
true:就结束
false:就结束
C:执行循环体
D:执行增量条件表达式,回到B继续。
(2)while循环:
while(条件表达式){
循环体;
}
while和for可以等价转换。
扩展格式:
初始化条件表达式;
while(判断条件表达式){
循环体;
增量条件表达式;
}
(3)do...while循环:
do{
循环体;
}while(条件判断);
扩展格式:
初始化条件表达式;
do{
循环体;
增量表达式;
}while(判断条件表达式);
(4)各个循环的区别?
第三中格式至少执行一次循环体。
(5)使用哪种循环?
如果范围明确,用for。
如果范围不明确,用while。
14.其他语句
(1)continue和break一般控制循环的走向。
(2)区别:
continue:结束本次循环,继续下一次循环。
break:结束当前循环。
|