黑马程序员_java基础_java基础语法

------<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;
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值