写代码
1.明确需求,也就是弄清楚我要做什么?
2.分析思路,也就是分析我要怎么去做?列出具体步骤。
3.确定步骤, 每个思路部分用到那些语句,方法和对象。
4.代码实现,通过Java语言代码把思路体现出来,实现需求。
1991年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;
1994年将Oak语言更名为Java。
1,Java的三种技术构架:
**JAVAEE**:Java Platform Enterprise Edition,开发企业环境的应用程序,主要正对web程序开发;
**JAVASE**:Java Platform Standard Edition,完成桌面应用程序的开发,是其他两者的基础;
**JAVAME**:Java Platform Micro Edition,开发电子消费出产品和嵌入式设备,如手机中的程序;
**1.JDK**:Java Development Kit,Java的开发和运行环境,Java的开发工具和jre。
**2.JRE**:Java Runtime Environment,Java程序的运行环境,Java运行的所需的类库+JVM(Java虚拟机)。
3.配置环境变量:
让Java jdk\bin 目录下的工具可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
1.关键字:其实就是某一种计算机语言对于指定的单词赋予了特殊的含义。
特点:全部都是小写的英文单词。
2.保留字:没有定义用途,但保留备用。goto、const。
3.标识符:就是指程序当中取的名字
包含:0-9 a-z A-Z和美元符号以及下划线
*注意事项:*
1.类名,方法名,变量名,包名
2.由字母,数字,下划线_和美元符号$组成
3.不能以数字开头 Demo1 正确的 1Demo 错误的
4.区分大小写
5.长度没有限制
6.不能使用JAVA当中的保留字和关键字。
*命名规范:*
1.驼峰式命名法
类名要求 :首字母要求大写 Student
如果包含多个单词 就要求多个单词的首字母都需要大写 SchoolNumber
方法名要求:首字母要求小写
如果包含多个单词,第二个单词开始,后面的单词首字母都要大写 eatFood
变量名要求: 一般都使用一个单词表示。都是小写字母。
如果一定需要多个单词,和方法名的命名要求相同。
包名要求: 全部都要小写
2.见名之意 (采用有意义的英文单词)
3.长度一般不要超过15个字符。
**4.注释**
*作用:* 1.注解,说明,解释
2.可以用于调试程序
当有错误但是没有找到错误的原因时,可以把错误所在的那行代码注释掉。
好处:增强了阅读性
*表现形式:*
1.单行注释 // 在行的开始加上双斜线,这一行都会被注释掉。不会影响运行。
2.多行注释 有开始,有结束 /* 注释的内容 */
3.文档注释 java语言特有的注释,特点:通常可以对于程序进行说明,并且建立说明性文档。
/* * ... */
javadoc.exe 工具可以使程序当中的代码和文档注释提取出来,使得该注释成为代码的说明书。
*细节性问题:*
1.单行注释当中可以在定义单行注释
2.单行注释当中可以在定义多行注释
3.多行注释当中可以在定义单行注释
4.多行注释当中不可以定义多行注释
**5常量:**
不能被改变的数值 100 3.14
JAVA当中常量的分类
1.整数常量 :所有的整数
2.小数常量 :所有的小数
3.布尔型常量: 比较特殊,只有两个数值,true和false
4.字符常量 :将一个数字字母或者符号使用单引号标 识('')。 'a' '1' ' '
5.字符串常量:将一个或者多个字符使用双引号进行 标识("")。 "13" "Hello world!"
6.null常量 :只有一个数值就是null。
对于整数常量,有四种表现形式。
二进制 :包含元素0,1
八进制 :包含元素0-7 必须以0开头
十进制 :包含元素0-9
十六进制 :包含的元素0-9 A-F 必须以0X或者0x开头
5.变量: 变化的数据
从专业角度:变量就是内存当中的存储区域。
变量的三要素: 类型,名称,数值
变量存储到内存当中的好处:数值是可变的。
为什么要定义变量呢?
用来不断的存放同一种类型的常量,变量的空间是可以不断的重复使用的。
什么时候需要定义变量呢?
一旦数据不确定,就定义变量,来作为存储的空间,随时的改变。
变量在JAVA当中的语法格式:
数据类型 变量名 = [初始化值];
变量数据类型的分类
1.基本数据类型:
数据类型 字节数 取值范围
byte 1字节 -128 ~ 127
short 2字节 -215 ~ 215-1
int 4字节 -231 ~ 231-1
long 8字节 -263 ~ 263-1
float 4字节 -3.403E38~3.403E38
double 8字节 -1.798E308~1.798E308
char 2字节 0~65535
boolean 1字节 true,false
2.引用数据类型:
类 接口 数组
6.JAVA当中常见运算符
(1)算术运算符:+ 、 - 、 * 、 / 、 % 、 ++ 、 --
对于单独一个数字进行自增运算,符号无论放在数字的左边还是右边,结果无区别。
b = a++;
运算过程
通过观察发现,a在前,++在后,说明除了本身的自增之外,还进行了其他的运算工作,比如赋值给b
1.在内存当中先将a当中的数值进行临时的存储 temp = a;
2.进行自增运算 a = a+1; a = 4;
3.将临时存储的变量的数值赋值给b b = temp;
b = ++a;
运算过程:
1.右边 a =a+1; a=4
2.左边 b = a; b=4
(2)赋值运算符:= 、 += 、 -= 、 *= 、 /= 、 %=
short s = 8;
s+=3; //没问题 +=是赋值运算符,编译器会自动转换类型
//s = s+3; //会报错,可能缺失精度
System.out.println("s="+s);
(3)关系运算符:> 、 < 、 >= 、 <= 、 == 、 !=
关系元素符得出的表达式结果是布尔类型的,要么是true,要么是false
(4)逻辑运算符:! 、 & 、 | 、 ^ 、 && 、 ||
逻辑运算符通常适用于连接两个关系运算符组成的表达式的,
逻辑运算符最后的结果也是boolean类型的,要么是true,要么是false
& :同真则真,其余为假
true & true = true
false & true = false;
true & false = false;
false & false = false;
| :同假则假,其余为真
true | true = true
false | true = true;
true | false = true;
false | false = false;
^ :相同为假,不同为真
true ^ true = false
false ^ true = true;
true ^ false = true;
false ^ false = false;
! :用于取反
! true = false;
! false= true;
&&特点:
当左边的结果为false时,右边的结果就不参与运算了,直接输出结果为false,也过和&的结果是一致的,
但是提高了效率。
||特点:
当左边的结果为true时,右边的结果就不参与运算了,直接输出结果为true,也过和|结果是一致的,
但是提高了效率。
(5)位运算符:& 、 | 、 ^ 、 ~ 、 >> 、 << 、 >>>
左移<<:乘以2的次幂的运算
带符号右移>>:除以2的次幂的运算,右移会出现高位的空缺,原来是什么,就使用什么补充。
无符号右移>>>:除以2的次幂的运算,右移会出现高位的空缺,无论原来的高位是什么,都是用0补充。
左移和右移存在的意义就是为了简便计算机当中的乘法和除法。
(6)字符串连接运算符:+
(7)三目运算符:X ? Y : Z
X为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,
否则整个运算结果为表达式z的值。
7.表达式:
表达式是符合一定语法规则的运算符和操作数的序列
表达式的类型和值
对表达式中操作数进行运算得到的结果称为表达式的值
表达式的值的数据类型即为表达式的类型
表达式的运算顺序
首先应按照运算符的优先级从高到低的顺序进行
优先级相同的运算符按照事先约定的结合方向进行
8.语句的结构
顺序结构 :从上到下依次执行。
选择结构(分支结构): if....else switch.....case
循环结构 :for...... while...... do....while...
选择结构
if语句的三种语法结构
if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if (条件语句){…}else if(条件语句){…}else{…}
switch语句的语法格式
switch(1){
case 0: 语句块1;break;
case 1:语句块2;break;
case 2:语句块3;break;
…
case 取值n: 语句块n;break;
default: 语句块n+1;break;
}
备选答案并没有指定的顺序,但是执行肯定是从第一个case开始,
把每一个case执行完,如果其中有匹配的case值,就执行匹配的case对应的语句块。
如果没有匹配的case,那么就会执行default对应的语句块。
注意事项:
一般情况下,每一个case语句块最后一定要写break语句,如果没有写break语句。
就会把下面的内容视为case要执行的内容。直到遇到break为止。才会Switch语句。
switch语句有关规则
表达式的返回值必须是下述几种类型之一:
int, byte, char, short;
case子句中的取值必须是常量,且所有case子句中的取值应是不同的;
default子句是可选的;
break语句用来在执行完一个case分支后使程序跳出switch语句块;
switch语句结束的情况有两种:
1.执行到了break语句
2.执行到了switch语句的结尾
if语句和switch语句的使用场景:
1.如果对于具体的数值进行判断,使用if语句可以,使用switch语句也可以。建议使用switch语句。
因为switch语句会把所有的备选答案加载进入到内存当中,选择的效率会更高。
2.如果对于数据的区间进行判断,使用if语句。
3.如果表达式的结果是boolean类型。毫无疑问,使用if语句。
为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是Java中的函数。函数就是体现之一。
Java中的函数定义的格式
修饰符 返回值类型 函数名(参数类型1 形式参数1,参数类型2 形式参数2,…){
执行语句;
return 返回值;
}
当函数没有具体的返回值时,返回的返回值类型就用void关键字表示。此时return语句可以省略不写,系统会帮你自动加上。
return的作用:结束函数。结束功能。
如何定义一个函数
函数其实就是一个功能,定义函数其实就是实现功能,通过两个明确来完成:
(1)明确该功能的运算完的结果,其实就是明确这个函数的返回值类型。
(2)在实现该功能的过程中是否有位置内容参与运算,其实就是明确该函数的参数列表(参数类型&参数个数)。
函数的作用
(1)用于定义功能。
(2)用于封装代码,提高代码的复用性。
注意:函数中指只能调用函数,不能定义函数。
主函数
(1)保证该类函数的独立运行。
(2)因为它是程序的入口。
(3)因为它被JVM(虚拟机)调用。
重载的定义是:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。
如何区分重载:当函数同名时,只看参数列表。和返回值类型没关系。