黑马程序员--java基础语法
来源:互联网 发布:linux cp 命令用法 编辑:程序博客网 时间:2024/05/01 10:48
------- android培训、java培训、期待与您交流! ----------
第一节--java概述
1、java的三种技术架构
JavaEE:开发企业环境下的应用程序,主要针对Web程序开发
JavaSE:开发桌面应用程序,是其他两种技术的基础
JavaME:开发电子消费产品和嵌入式设备应用程序,如手机中的程序
2、java的开发环境
JDK:java开发工具包,包括JRE和java开发工具(javac.exe、java.exe等)
JRE:java运行时环境,包括JVM和java语言的核心类库
JVM:java虚拟机。java程序不是直接运行在系统平台,而是运行在虚拟机上,在不同的系统上安装相应的java虚拟机就可以运行java程序,这也算java跨平台的原理。
配置环境变量
和java相关的环境变量有两个:path、classpath
path:告诉系统要执行的可执行文件的位置。当要执行一个系统可执行文件时,系统会在当前目录下查找该文件并执行,如果没找到,就会到path变量配置的路径下去查找并执行。
classpath:告诉java虚拟机要执行的类文件的位置。当让java虚拟机执行一个类文件时,java虚拟机默认在当前目录下查找类文件并执行,如果配置了classpath变量,那么java虚拟机会直接到classpath变量配置的路径下去查找,如果classpath变量后加了分号,没找到的话会到当前目录下再查找,没加分号则不会。一般不加分号,这样在指定目录下没找到的话就报错,就可以调试程序。
3、编译和运行
java源码编写完成后,生成的.java文件不能被JVM执行,需要编译成被JVM识别的.class文件,编译过程由javac.exe完成
JVM执行.class文件由java.exe完成
第二节--java语法基础
1、关键字和标示符
关键字就是java语言中被赋予了特殊意义的单词
标示符就是用来起名字的符号。自定义标示符的规则:
由字母、数字或下划线组成,数字不能开头,不能使用关键字
2、常量:就是不会变化的数据
整数常量,字符常量,布尔常量,浮点型常量,null常量
3、变量
变量就是内存中的一个存储空间,用于存储常量数据。
变量定义格式:数据类型 变量名 数据
数据类型
基本数据类型:整数型(byte、short、int、long)浮点型(float、double)字符型(char)布尔型(boolean)
引用数据类型:数组、类、接口
基本数据类型的级别:byte、char、short-->int-->long-->float-->double
自动类型转换:从级别低的类型转换成级别高的类型,系统自动转换
强制类型转换:从级别高的类型转换成级别低的类型,需要强制转换
4、运算符
算数运算符:+ - * / % ++ --
x++和++x:x = x + 1的简写形式。++在前,x先自增后参与运算,++在后,先参与运算在自增。自减--同理
赋值运算符:= += -= *= /= %=
比较运算符:== > < >= <= instanceof
逻辑运算符:| || & && ! ^
除了!其他逻辑运算符两边都是boolean表达式。
| 和 || 的区别:运算结果相同,对于||,如果第一个表达式结果是true,那么就不会执行第二个表达式。
&和&&的区别:运算结果相同,对于&&,如果第一个表达式结果是false,那么就不会执行第二个表达式。
^异或:两边表达式结果相同为false,结果不同为true
位运算符:用于操作二进制位的运算:| & ^ ~ << >> >>>
5、语句
(1)、判断语句:if 语句
class IfDemo {public static void main(String[] args) {int x = 1;if (x > 1) {System.out.println("yes");}else {System.out.println("a");}/* * if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2; * 三元运算符: * 好处:可以简化if else代码。 * 弊端:因为是一个运算符,所以运算完必须要有一个结果。 */int a = 9, b;b = (a > 1) ? 100 : 200;if (a > 1)b = 100;elseb = 200;int n = 3;if (n > 1)System.out.println("a");else if (n > 2)System.out.println("b");else if (n > 3)System.out.println("c");elseSystem.out.println("d");/* * if(n>1) System.out.println("a"); if(n>2) System.out.println("b"); * if(n>3) System.out.println("c"); else System.out.println("d"); */System.out.println("over");}}
(2)、选择语句:switch语句
class SwitchDemo {public static void main(String[] args) {int a = 4, b = 2;char ch = '+';switch (ch) {case '-':System.out.println(a - b);break;case '+':System.out.println(a + b);break;case '*':System.out.println(a * b);break;case '/':System.out.println(a / b);break;default:System.out.println("非法");}System.out.println("Hello World!");}}
注意:switch语句接收的变量类型仅限于byte、char、short、int
(3)、循环语句:for循环语句和(do) while 循环语句
当对某些语句执行多次时就使用循环结构
for循环
定义格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;
}
while循环
定义格式:
while(循环条件表达式){
执行语句;
}
<pre name="code" class="java">class ForDemo {public static void main(String[] args) {for(int x = 0; x<3 ; x++){System.out.println("x="+x);}//使用while循环int y=0;while(y<3){System.out.println("y="+y);y++;}System.out.println("y===="+y);/*1,变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。for语句执行完毕。该变量在内存中被释放。2,for和while可以进行互换。如果需要定义循环增量。用for更为合适。*/}}
do while循环和while循环的区别:前者先执行循环体后判断循环条件,后者先判断循环条件后执行循环体。也就是说,无论是否满足循环条件,do while 都会执行一次循环体。
break 和 continue:
break用于switch语句和循环语句,用于循环语句时结束当前循环,当循环嵌套时,只能跳出当前循环,如果想跳出外层循环,可以给循环起名字,即标号。
continue只用于循环语句,结束本次循环继续下次循环。
注意:当break或continue单独存在时,后面不可以定义语句,因为执行不到。
6、函数
函数的定义
函数就是定义在类中有特定功能的一段小程序。
函数的格式:
修饰符 返回值类型 函数名 (参数类型 形式参数1,参数类型 形式参数2,……){
执行语句;
return 返回值;
}
返回值类型:函数运行后结果的数据类型
参数类型:形式参数的数据类型
形式参数:是一个变量,用来存储调用函数时传递给函数的实际参数
实际参数:调用函数时传递给函数的具体的值
return语句:用来结束函数
返回值:函数运行后返回给调用者的结果
函数的特点
a、函数对功能代码进行了封装
b、函数提高了功能的复用性
c、函数提高了代码的复用性
d、函数只有被调用时才会执行
e、函数中可以调用函数,不能定义函数
如何定义函数
两个明确:明确函数运行的结果
明确参与运算的未知内容
练习:定义函数
<pre name="code" class="java">//需求:定义一个功能,求任意整数乘以9的值//明确:运行函数的结果是一个积,有一个未知整数参与运算class Test{public static void main(String [] args){sop(getSum(9));}//返回值类型为intpublic static int getSum(int x){int sum = x * 9;return sum;}public static void sop(Object obj){System.out.println(obj);}}
函数的重载
java允许一个类中存在多个同名函数,但函数的参数列表必须不同
参数列表不同,是指参数类型或者参数个数,注意参数列表时有顺序的,不同类型的参数顺序不同参数列表就不同,与返回值类型无关。
7、数组
数组是一种用于存储同一类型数据的容器,可以对容器中的数据进行编号,从0开始。数组用于封装数据,是一个实体。
数组的定义形式有两种:
(1)、动态初始化:元素类型 [] 变量名 = new 元素类型[元素个数];
如:int [] arr = new int [10];
(2)、静态初始化:元素类型 [] 变量名 = {元素1,元素2,……};或
元素类型 [] 变量名 = new元素类型[]{元素1,元素2,……};
如:int [] arr = {1,2,3,3,4};或int [] arr = new int []{1,2,3,3,4};
数组的应用:
(1)、选择排序和冒泡排序
<pre name="code" class="java">public class ArraySort {public static void main(String[] args) {int[]array ={3,4,1,7,0,9,5,8,2,6};print(array);bulSort(array);print(array);}public static void print(int[] arr){System.out.print('[');for(int x = 0;x < arr.length;x++){if(x!=arr.length-1)System.out.print(arr[x]+',');elseSystem.out.print(arr[x]+"]");}System.out.println();}/*选择排序 * 思路:将数组0脚标元素和数组中其他元素依次比较,将较小的元素放到0脚标位置 * 比较结束后,0脚标元素为数组最小值元素。继续将1脚标元素和其余元素比较, * 以此类推。 * */public static void selectSort(int[] arr){//外层循环遍历数组元素for(int x = 0;x < arr.length-1;x++){//内存循环比较元素大小for(int y = x+1;y < arr.length;y++){//如果元素arr[x]比元素arr[y]大,那么交换两者位置if(arr[x] >arr[y]){int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}}}}/*冒泡排序 * 思路:从0脚标元素开始,相邻的两个元素依次比较,如果前一个元素比后一个元素大,则两者交换位置,比较结束后, * 末尾元素则是最大值元素。再从0脚标元素开始比较,以此类推。 * */public static void bulSort(int[] arr){//外循环遍历数组for(int x = 0;x < arr.length;x++){//内循环比较元素大小for(int y = 0;y < arr.length-x-1;y++){//外循环计数变量x控制内循环比较的次数if(arr[y] > arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}}public static void swap(int[]arr,int x,int y){}}(2)、折半查找
/*查找一个数在数组中的位置时,可以通过遍历数组元素,与这个数比较进行查找。 * 为了提高效率,可以将这个数key和数组中间位置元素arr[mid]比较,若这个数大于中间元素值,则 * min=mid+1,mid=(min+max)/2,再将key与新中间位置元素arr[mid]比较,以此类推。 * 若这个数key小于arr[mid],则max=mid-1,mid=(min+max)/2,以此类推。 * 若数组中不存在这个元素,则返回-1; * */public class HalfSearch {public static void main(String[] args) {int[]arr={2,4,6,8,9};int key = 21;System.out.println(halfSearch(arr, key));}//定义一个折半查找的方法public static int halfSearch(int[]arr,int key) {int min = 0,max = arr.length-1,mid;while(min <= max){mid = (min + max)/2;if(key>arr[mid])min = mid + 1;else if(key < arr[mid])max = mid - 1;elsereturn mid;}return -1;}}
- 黑马程序员---基础语法【java】
- 黑马程序员---Java基础语法
- 黑马程序员---java基础语法
- 黑马程序员---java---基础语法
- 黑马程序员 java基础语法
- 黑马程序员 java语法基础
- 黑马程序员-Java基础语法
- 黑马程序员--java基础语法
- 黑马程序员---Java基础语法
- 黑马程序员-Java语法基础
- 黑马程序员--java基础语法
- 黑马程序员-java基础语法
- 黑马程序员 -----java基础语法
- 黑马程序员-java语法基础
- 黑马程序员----JAVA基础语法
- 黑马程序员-------java语法基础
- 黑马程序员------java基础语法
- 【黑马程序员】JAVA基础语法
- ECSTORE 新建APP应用
- 第十四周项目三:带名字的多科成绩单(二)
- Android 适配器无法刷新
- OC--最热的一套面试题
- [Objective-C] 01.Objective-C语法基础
- 黑马程序员--java基础语法
- 【Android自动化测试之Robotium】04. 命令行运行Android Robotium自动化用例或单元测试用例
- redis lua
- LTP在实践中的使用
- [Objective-C] 02.Objective-C语法基础2
- interface在大型项目中的使用心得
- android学习之GridLayout
- [Objective-C] 03.OC中的继承和初始化方法
- 【学渣的奋斗之路】【汇编语言】 1.1~1.10