------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1、JVM、JRE和JDK的区别:
JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。
java语言是跨平台,jvm不是跨平台的。
JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。
JDK(Java Development Kit):java的开发工具,包括jre+开发工具
2、环境变量path和classpath的作用是什么?
(1)path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,
用于指定DOS窗口命令的路径。
(2)Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。
3、变量有什么用?为什么要定义变量?什么时候用?
答:变量的作用:用来存储数据。
为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用
4、&和&&的区别?
答:(1)&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;
只能操作boolean类型数据;
(2)&不会出现短路,将整个表达式都运算。既可以操作boolean数据还可以操作数。
5、标示符命名规则:
由数字(0-9),大小写英文字母,以及_和$组成。
不能以数字开头。
不能使用关键字来自定义命名。
6、数据类型:
(1)基本数据类型(4类8种):
整数类型:byte、short、int、long
浮点数类型:float、double
字符类型:char
布尔类型:boolean(ture false)
(2)引用数据类型:
类
接口
数组
7、类型转换
精度从高到低 double float long int short(char) byte
(1)自动类型转换 将一个低精度---高精度
(2)强制类型转换 将一个高精度---低精度(精度会下降)
8、java语言的三种技术架构
J2EE:企业版
是为开发企业环境下的应用程序提供的一套解决方案。
该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。
J2SE:标准版
是为开发普通桌面和商务应用程序提供的解决方案。
该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
比如Java版的扫雷。
J2ME:小型版
是为开发电子消费产品和嵌入式设备提供的解决方案。
该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。
9、java的跨平台性:
通过Java语言编写的应用程序在不同的系统平台上都可以运行。
跨平台的原因:
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。
由JVM来负责Java程序在该系统中的运行。
10、有符号数据的表示法(次重点)
原码,反码(原码取反),补码(反码+1)。
11、函数
定义:函数就是定义在类中的具有特定功能的一段独立小程序。
特点:
定义函数可以将功能代码进行封装
便于对该功能进行复用
函数只有被调用才会被执行
函数的出现提高了代码的复用性
对于函数没有具体返回值的情况,返回值类型用关键字void表示,
那么该函数中的return语句如果在最后一行可以省略不写。
函数的应用两个明确:
明确要定义的功能最后的结果是什么?
明确在定义该功能的过程中,是否需要未知内容参与运算
12、重载:
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表(参数类型以及参数个数)。
好处:方便于阅读,优化了程序设计。
13、数组:
概念:同一种数据类型的集合。
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
14、内存结构:
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
方法区:静态成员、构造函数、常量池、线程池
本地方法区:window系统占用
寄存器:
案列:
Java语言基础(if语句的格式2和三元的相互转换问题)
* A:案例演示* if语句和三元运算符完成同一个效果* B:案例演示* if语句和三元运算符的区别* 三元运算符实现的,都可以采用if语句实现。反之不成立。* 什么时候if语句实现不能用三元改进呢?* 当if语句控制的操作是一个输出语句的时候就不能。* 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。案例:
class Demo4_If {
public static void main(String[] args) {
int x = 10;
int y = 20;
int z;
if (x > y) {
//z = x;
System.out.println(x + "是最大值");
}else {
//z = y;
System.out.println(y + "是最大值");
}
//System.out.println(z);
int a = 20;
int b = 30;
int c = (a > b)? a : b;
}
}
Java语言基础(选择结构if语句格式3及其使用)
* A:if语句的格式3:*if(比较表达式1) {语句体1;}else if(比较表达式2) {语句体2;}else if(比较表达式3) {语句体3;}...else {语句体n+1;}* B:执行流程:* 首先计算比较表达式1看其返回值是true还是false,* 如果是true,就执行语句体1,if语句结束。* 如果是false,接着计算比较表达式2看其返回值是true还是false,* 如果是true,就执行语句体2,if语句结束。* 如果是false,接着计算比较表达式3看其返回值是true还是false,* 如果都是false,就执行语句体n+1。* C:注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示案例:
class Demo5_If {
public static void main(String[] args) {
int x = 2;
if (x == 1) {
System.out.println("男厕所欢迎您");
}else if (x == 0) {
System.out.println("女厕所欢迎您");
}else {
System.out.println("无法识别您的性别");
}
}
}
Java语言基础(选择结构if语句格式3练习)
* A:练习1*需求:键盘录入一个成绩,判断并输出成绩的等级。90-100 优80-89 良70-79 中60-69 及0-59 差
class Test1_If {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//需求:键盘录入一个成绩,判断并输出成绩的等级。
System.out.println("请输入学生成绩范围在1到100之间");
int x = sc.nextInt();
if (x >= 90 && x <= 100) {
System.out.println("优");
}else if (x >= 80 && x <= 89 ) {
System.out.println("良");
}else if (x >= 70 && x <= 79 ) {
System.out.println("中");
}else if (x >= 60 && x <= 69 ) {
System.out.println("及");
}else if (x >= 0 && x <= 59 ) {
System.out.println("差");
}else {
System.out.println("成绩录入错误");
}
//下面这两种写法在同学掌握了上面的写法的基础上可以扩展一下
/*
if (x>100 || x<0) {
System.out.println("成绩不在0-100之间");
} else if (x>=90) {
System.out.println("优");
} else if (x>=80) {
System.out.println("良");
} else if (x>=70) {
System.out.println("中");
} else if (x>=60) {
System.out.println("及");
} else {
System.out.println("差");
}
*/
/*
if (x>100 || x<0) {
System.out.println("成绩不在0-100之间");
} else if (x<60) {
System.out.println("差");
} else if (x<70) {
System.out.println("及");
} else if (x<80) {
System.out.println("中");
} else if (x<90) {
System.out.println("良");
} else {
System.out.println("优");
}
*/
}
}
Java语言基础(选择结构if语句的嵌套使用)
* A:案例演示* 需求:获取三个数据中的最大值* if语句的嵌套使用。
class Demo6_IfIf {
public static void main(String[] args) {
int a = 40;
int b = 50;
int c = 30;
if (a > b) {
if (a > c) {
System.out.println(a + "是最大值");
}else {
System.out.println(c + "是最大值");
}
}else { //b >= a
if (b > c) {
System.out.println(b + "是最大值");
}else {
System.out.println(c + "是最大值");
}
}
}
}
Java语言基础(选择结构switch语句的格式及其解释)
* A:switch语句的格式*switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;…default:语句体n+1;break;}* B:switch语句的格式解释* C:面试题(基本数据类型,只要能提升为int的都可以,引用数据类型中的枚举(JDK1.5)和String(JDK1.7))* byte可以作为switch的表达式吗?* long可以作为switch的表达式吗?* String可以作为switch的表达式吗?* C:执行流程* 先计算表达式的值* 然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句案例:
class Demo1_Switch {
public static void main(String[] args) {
String name = "rose";
String gender = "妖";
switch (gender) {
case "男士":
System.out.println(name + "是一位" + gender + "喜欢吃饭睡觉打dota");
break;
case "女士":
System.out.println(name + "是一位" + gender + "喜欢逛街购物美容");
break;
default:
System.out.println(name + "是一位" + gender + "打雌性激素维持美貌容颜");
break;
}
}
}
Java语言基础(选择结构switch语句的练习)
* A:整数(给定一个值,输出对应星期几)案例:
class Test1_Switch {
public static void main(String[] args) {
//* A:整数(给定一个值,输出对应星期几)
int week = 1;
switch (week) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("对不起没有对应的星期");
break;
}
}
}
Java语言基础(选择结构switch语句的注意事项)
* A:案例演示* a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的* b:default可以省略吗?* 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。* 特殊情况:* case就可以把值固定。* A,B,C,D* c:break可以省略吗?* 最后一个可以省略,其他最好不要省略* 会出现一个现象:case穿透。* 最终我们建议不要省略* d:default一定要在最后吗?* 不是,可以在任意位置。但是建议在最后。* e:switch语句的结束条件* a:遇到break就结束了* b:执行到switch的右大括号就结束了
###03.12_Java语言基础(选择结构switch语句练习)(掌握)
* A:看程序写结果://4*int x = 2;int y = 3;switch(x){default:y++;break;case 3:y++;case 4:y++;}System.out.println("y="+y);* B:看程序写结果://6*int x = 2;int y = 3;switch(x){default:y++;case 3:y++;case 4:y++;}System.out.println("y="+y);
Java语言基础(选择结构if语句和switch语句的区别)(掌握)(用switch能做的,用if都能做,单反过来则不行,比如成绩评优)
* A:总结switch语句和if语句的各自使用场景* switch建议判断固定值的时候用* if建议判断区间或范围的时候用* B:案例演示* 分别用switch语句和if语句实现下列需求:* 键盘录入月份,输出对应的季节
Java语言基础(选择结构switch语句的注意事项)(掌握)
* A:案例演示
* a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
* b:default可以省略吗?
* 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
* 特殊情况:
* case就可以把值固定。
* A,B,C,D
* c:break可以省略吗?
* 最后一个可以省略,其他最好不要省略
* 会出现一个现象:case穿透。
* 最终我们建议不要省略
* d:default一定要在最后吗?
* 不是,可以在任意位置。但是建议在最后。
* e:switch语句的结束条件
* a:遇到break就结束了
* b:执行到switch的右大括号就结束了
###03.12_Java语言基础(选择结构switch语句练习)(掌握)
* A:看程序写结果://4
*
int x = 2;
int y = 3;
switch(x){
default:
y++;
break;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);
* B:看程序写结果://6
*
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);
###03.13_Java语言基础(选择结构if语句和switch语句的区别)(掌握)(用switch能做的,用if都能做,单反过来则不行,比如成绩评优)
* A:总结switch语句和if语句的各自使用场景
* switch建议判断固定值的时候用
* if建议判断区间或范围的时候用
* B:案例演示
* 分别用switch语句和if语句实现下列需求:
* 键盘录入月份,输出对应的季节
Java语言基础(循环结构概述和for语句的格式及其使用)
* A:循环结构的分类* for,while,do...while* B:循环结构for语句的格式:*for(初始化表达式;条件表达式;循环后的操作表达式) {循环体;}* C执行流程:* a:执行初始化语句* b:执行判断条件语句,看其返回值是true还是false* 如果是true,就继续执行* 如果是false,就结束循环* c:执行循环体语句;* d:执行循环后的操作表达式* e:回到B继续。* D:案例演示* 在控制台输出10次"helloworld"案例:
class Demo1_For {
public static void main(String[] args) {
//在控制输出10次helloworld,这样做不推荐,因为复用性太差
/*System.out.println("helloworld");
............*/
for (int i = 1;i <= 10 ;i++ ) {
System.out.println("helloworld");
}
}
}
Java语言基础(控制跳转语句break语句)
* A:break的使用场景* 只能在switch和循环中案例:
class Demo1_Break {
public static void main(String[] args) {
//break;写在这报错,break只能用在循环和switch语句中
for (int x = 1;x <= 10 ;x++ ) {
if (x == 4) {
break; //跳出循环
}
System.out.println("x = " + x);
}
}
}
Java语言基础(控制跳转语句continue语句)
* A:continue的使用场景* 只能在循环中 ,提前结束本次循环(循环体中continue后面的语句将不再执行),继续进行下一次/** A:continue的使用场景* 只能在循环中*/案例:
class Demo2_Continue {
public static void main(String[] args) {
for (int x = 1;x <= 10 ;x++ ) {
if (x == 4) {
continue; //终止本次循环,继续下次循环
}
System.out.println("x = " + x);
}
}
}<span style="font-size:12px;">
</span>
Java语言基础(控制跳转语句标号)
* 标号:标记某个循环对其控制* 标号组成规则:其实就是合法的标识符案例:
class Demo3_Mark { //mark 标记
public static void main(String[] args) {
/*outer: for (int i = 1;i <= 10 ;i++ ) { //a就是标号,只要是合法的标识符即可
System.out.println("i = " + i);
inner: for (int j = 1;j <= 10 ;j++ ) {
System.out.println("j = " + j);
break outer;
}
}*/
System.out.println("大家好");
http://www.heima.com //这里http:就是一个标号,而后面的//是java中的注释,所以相当于给输出语句做了一个标记,没有什么实际的意义
System.out.println("才是真的好");
}
}
Java语言基础(控制跳转语句return语句)
* A:return的作用* 返回* 其实它的作用不是结束循环的,而是结束方法的。* B:案例演示* return和break以及continue的区别?* return是结束方法* break是跳出循环* continue是终止本次循环继续下次循环案例:
class Demo4_Return {
public static void main(String[] args) {
for (int i = 1;i <= 10 ;i++ ) {
if (i == 4) {
//break; //停止循环
return; //返回的意思,用来返回方法
}
}
System.out.println("循环结束了");
}
}
Java语言基础(方法概述和格式说明)
* A:为什么要有方法* 提高代码的复用性 //如果不 复用,就会出现很多重复性的代码* B:什么是方法* 完成特定功能的代码块。* C:方法的格式*修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {方法体语句;return 返回值;}* D:方法的格式说明* 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。* 返回值类型:就是功能结果的数据类型。* 方法名:符合命名规则即可。方便我们的调用。* 参数:* 实际参数:就是实际参与运算的。* 形式参数;就是方法定义上的,用于接收实际参数的。* 参数类型:就是参数的数据类型* 参数名:就是变量名* 方法体语句:就是完成功能的代码。* return:结束方法的。* 返回值:就是功能的结果,由return带给调用者。
Java语言基础(方法之求和案例及其调用)
* A:如何写一个方法* 1,明确返回值类型* 2,明确参数列表* B:案例演示* 需求:求两个数据之和的案例
class Demo2_Sum {
public static void main(String[] args) {
/*int a = 10;
int b = 20;
int sum = a + b;
System.out.println(sum);
int c = 30;
int d = 40;
int sum2 = c + d;
System.out.println(sum2);*/
int sum = add(10,20);
System.out.println(sum);
//add(30,40); //有返回值方法的单独调用,没有意义
System.out.println(add(30,40)); //这样调用是可以,but如果需要用这个结果不推荐这样调用
//盘子 = 炒菜(地沟油,苏丹红,镉大米,烂白菜);
}
public static int add(int a,int b) { //int a = 10,int b = 20
int sum = a + b;
return sum; //如果有返回值必须用return语句带回
}
/*
盘子 炒菜(油,调料,米,菜) {
炒菜的动作
return 一盘菜;
}
*/
}
Java语言基础(方法的注意事项)
* A:方法调用(有具体返回值)* a:单独调用,一般来说没有意义,所以不推荐。* b:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作。* c:赋值调用,推荐方案。* B:案例演示* a:方法不调用不执行* b:方法与方法是平级关系,不能嵌套定义* c:方法定义的时候参数之间用逗号隔开* d:方法调用的时候不用在传递数据类型* e:如果方法有明确的返回值,一定要有return带回一个值
Java语言基础(方法的练习)
* A:案例演示* 需求:键盘录入两个数据,返回两个数中的较大值* B:案例演示* 需求:键盘录入两个数据,比较两个数是否相等案例:
import java.util.Scanner;
class Test1_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
System.out.println("请输入第一个整数:");
int x = sc.nextInt(); //将键盘录入的整数存储在x中
System.out.println("请输入第二个整数:");
int y = sc.nextInt(); //将键盘录入的整数存储在y中
//int max = getMax(x,y);
//System.out.println(max);
boolean b = isEquals(x,y);
System.out.println(b);
}
/*
返回连个整数的较大值
1,明确返回值类型 int
2,明确参数列表 int a,int b
*/
public static int getMax(int a,int b) {
return a > b ? a : b;
}
/*
判断两个整数是否相等
1,明确返回值类型 boolean
2,明确参数列表 int a,int b
*/
public static boolean isEquals(int a,int b) { //isEquals 是否相等
return a == b;
}
}
Java语言基础(方法的练习)
* A:案例演示* 需求:根据键盘录入的数据输出对应的乘法表案例:
import java.util.Scanner;
class Test2_Method {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
System.out.println("请录入一个整数,范围在1-9之间");
int num = sc.nextInt(); //将键盘录入的整数存储在num中
print99(num);
}
/*
打印99乘法表
1,返回值类型void
2,参数列表,int a
*/
public static void print99(int a) {
for (int i = 1;i <= a ;i++ ) { //行数
for (int j = 1;j <= i ;j++ ) { //列数
System.out.print(j + "*" + i + "=" + (i * j) + "\t" );
}
System.out.println();
}
}
}
Java语言基础(方法重载概述和基本使用)
* A:方法重载概述* 求和案例* 2个整数* 3个整数* 4个整数* B:方法重载:* 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。* 参数列表不同:* A:参数个数不同* B:参数类型不同* C:参数的顺序不同(算重载,但是在开发中不用)案例:
class Demo4_Overload { //overload重载
public static void main(String[] args) {
double sum1 = add(10,20.1);
System.out.println(sum1);
int sum2 = add(10,20,30);
System.out.println(sum2);
double sum3 = add(12.3,13);
System.out.println(sum3);
}
/*
求两个整数的和
1,返回值类型int
2,参数列表 int a,int b
*/
public static double add(int a,double b) {
return a + b;
}
/*
求三个整数的和
1,返回值类型int
2,参数列表 int a,int b,int c
*/
public static int add(int a,int b,int c) {
return a + b + c;
}
/*
求两个小数的和
1,返回值类型double
2,参数列表 double a,double b
*/
public static double add(double a,int b) {
return a + b;
}
}<span style="font-size:12px;">
</span>
Java语言基础(数组的操作4查表法)(掌握)
* A:案例演示* 数组查表法(根据键盘录入索引,查找对应星期)案例:
import java.util.Scanner;
class Demo11_Array {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入对应的星期范围在1-7");
int week = sc.nextInt();
System.out.println("星期" + getWeek(week));
}
/*
根据索引返回对应的星期
1,返回值类型char
2,参数列表int week
*/
public static char getWeek(int week) {
char[] arr = {' ','一','二','三','四','五','六','日'}; //定义了一张星期表
return arr[week]; //通过索引获取表中的元素
}
}
Java语言基础(数组的操作5基本查找)(掌握)
* A:案例演示* 数组元素查找(查找指定元素第一次在数组中出现的索引)案例:
class Demo12_Array {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55,66,77};
int index = getIndex(arr,88);
System.out.println(index);
}
/*
查找元素索引
1,返回值类型int
2,明确参数列表,int[] arr,int value
*/
public static int getIndex(int[] arr,int value) {
for (int i = 0;i < arr.length ;i++ ) { //数组的遍历
if (arr[i] == value) { //如果数组中的元素与查找的元素匹配
return i;
}
}
return -1;
}
}