软件:其实就是一系列按照特定的顺序组成的计算机数据和指令的集合。
常见的软件:
系统软件:Windows Linux Unix Dos
应用软件:QQ 360 王者荣耀
2.什么是开发:
制作软件的过程
3.人机交互
软件的出现就实现了人与计算机之间更好的交互。
交互方式:
1.图形化界面 (GUI) :优点:简单直观,使用者容易上手,易于接受。
2.命令行方式 (CLI) :需要控制台,需要去输入一些特殊的指令,使用这种方式在计算中当中
完成操作比较麻烦,因为记录这些指令。
4.命令行提示符
dir: 列出当前目录下的文件和文件夹
md: 创建目录
rd: 删除目录
cd: 进入指定目录
cd..: 退回到上一级目录
cd\: 退回到根目录
del: 删除文件
exit: 退出dos命令行
5.什么是计算机语言?
人与计算机交流的方式。
6.计算机语言的历史:
1.机器语言
2.汇编语言 20世纪50年代
3.早期高级语言 fortran
4.结构化高级语言 20世纪60年代 C语言 面向过程的语言
5.面向对象语言
7.JAVA语言的概述
1.sun公司在1995年推出的一门高级编程语言。
2.面向internet的编程语言。
3.随着java语言在web方面的不断成熟,已经称为web方面的首选编程语言。
4.随着移动互联网的发展,android手机的市场占有率不断的提高,java也是android的底层语言。
5.简单易学,完全面向对象,安全可靠,与平台无关的语言。
8.java的体系:
JAVA SE :Java Platform,Standard Edition
标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案
JAVA EE :Java Platform,Enterprise Edition
企业版:以企业为环境而开发应用程序的解决方案
JAVA ME :Java Platform, Micro Edition
微型版:致力于消费产品 和嵌入式设备的最佳解决方案
9.什么是跨平台性?
平台指的是什么?----》操作系统
通过java语言编写的应用程序,在不同的平台上都能够运行。
原理:
只需要在运行java应用程序的平台上先安装一个java虚拟机(JVM)即可。
jvm虚拟机负责java程序在该操作系统上的运行。
跨平台性还有一种说法:可移植性
在一个平台开发之后,可以移植到另外一个平台使用。
一个程序可以在平台上执行的条件:
1.这个程序在平台中被识别
2.这个程序在平台中被解析
10.java语言的运行机制
计算机的高级编程语言类型:
编译型
解释型
Java 语言是两种类型的结合;
先编译,再解释执行
11.java程序的执行过程
1.编写源代码
2.编译源程序,生成字节码文件javac XX.java
3.运行字节码文件
12.jvm特点
JVM可以理解成一个可运行Java字节码的虚拟计算机系统
它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信
对于不同的运行平台,有不同 的JVM。
JVM屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
13.JAVA当中的两大核心机制
Java虚拟机(Java Virtual Machine) JVM
垃圾回收器(Garbage Collection) GC
14.垃圾回收器的特点:
不再使用的内存空间应当进行回收-垃圾回收。
在C/C++等语言中,由程序员负责回收无用内存
Java语言消除了程序员回收无用内存空间的责任:
JVM提供了一种系统线程跟踪存储空间的分配情况。并在JVM的空闲时,检查并释放那些可以被释放的存储空间。
垃圾回收器在Java程序运行过程中自动启用,程序员无法精确控制和干预。
15:JDK(Java Development Kits)-- Java开发工具集
JRE(Java RunTime Environment)Java运行时环境
Java编译器(javac.exe)
Java运行时解释器(java.exe)
Java文档化化工具(javadoc.exe)
其它工具及资源
JRE(JAVA Runtime Environment)---JAVA运行时环境
JRE的三项主要功能:
加载代码:由类加载器(class loader)完成;
校验代码:由字节码校验器(bytecode verifier)完成;
执行代码:由运行时解释器(runtime interpreter)完成。
16.配置环境:
path: 用来指定操作系统当中可执行命令的路径
classpath:Java虚拟机在运行某个类时会按classpath指定的目录顺序去查找这个类
验证的方法:
javac:Java源文件的编译工具。
java:Java字节码解释程序。
17. 第一个java小程序helloworld
注意事项:
1.当类被public修饰时,类名和源文件名必须保持一致。
如果没有被public修饰,类名和源文件名可以不一致。
2.程序的入口是主函数,没有主函数的java文件能编译,但是不能运行。
3.一个源代码文件当中能生成多字节码文件,和其中包含的类的数量相关?
4.一个源文件当中包含的类的类名不能重复。
18.常见的问题:
问题一:javac: 找不到文件:
错误原因:1.文件名是错误的。
2.目录是错误的。
3.文件拓展名是错误的。
计算机---》组织---》文件夹和搜索选项---》查看----》隐藏已知文件的拓展名改为不选中,就ok了。
问题二:java:java.lang.NoClassDefFoundError 问题
在执行java命令时区分大小写字母 解释运行字节码文件
在执行javac命令时不区分大小写字母 编译源程序
总结:编译源程序时不区分文件名的大小写字母,而解释字节码文件时区分。
问题三:错误: 在类 Demo01 中找不到主方法, 请将主方法定义为:
public static void main(String[] args)
主函数写错了,如果没有main函数就无法运行java代码。
问题四:写代码要随时保存
问题五:注意分号的添加
问题六: 程序包system不存在
英文字符大小写错误,应该大写时就大写,需要小写就小写。
19.JAVA语言的基础语法
1.关键字
2.标识符
3.注释
4.常量和变量
5.运算符
6.语句
7.函数(方法)
20.关键字: 其实就是某一种计算机语言对于指定的单词赋予了特殊的含义。
特点:都是英文单词,而且都是小写的字母
在Editplus当中编译时,蓝色的都是关键字,颜色和编译器相关。
保留字:没有定义用途,但保留备用。goto、const
21. 标识符 :用来标识的符号
就是给程序中的内容起的名字。
标识符的分类: 类名 变量名 函数名 包名
包含的内容: a-z A-Z 0-9 $和_
语法规则:
1.由字母,数字,下划线和美元符号组成的。
2.不能以数字开头。
3.区分大小写 class Demo class demo
4.长度没有限制。
5.命名时不能使用java当中的关键字和保留字
命名规范
1.驼峰式命名法
大驼峰式命名法 : class SchoolName
指的是类名的规范,首字母要求大写,如果类名当中包含两个单词或以上,要求每个单词的首字母大写。
class Animal
小驼峰式命名法 :
通常用于函数名:单词的首字母也小写,如果函数当中包含多个单词,要求从第二个单词开始首字母大写。
eatFoodAndFruit main
2.见名之意 :使用有意义的英文单词
3.类名的首字母大写,而方法名和变量名的首字母要小写,包名全小写
4.长度不要超过15个字符
22.注释:
注释的由来:
大家可以看到我们在写出的程序都是英文的,因为这个是美国人研究出来的,对于中国人来看呢,
可能就存在一些不好理解的问题,那我们希望在写完一段代码之后加入一些说明性的文字,
以便于其他人阅读或者日后自己阅读的时候有可读性。
注释的特点:不会参与编译
注释的好处:增强阅读性
注释的作用:1.注解,说明,解释
2.用来调试程序:当错误没有找到解决方法时,就把错误所在的那行代码注释掉。
注释的表现形式:
1.单行注释
在行的开头加上 // (这一行的内容都会被注释)
2.多行注释
有开始有结束 /* 注释的内容 */
3.文档注释 :通常用于对于程序进行说明,并且建立说明性文档。
java语言特有的注释
/** 注释的内容 */
javadoc.exe 可以将程序当中的文档注释和代码同时提取出来,使注释称为该代码的说明书。
注释的细节问题:
1.单行注释当中可以定义单行注释。
2.单行注释当中可以定义多行注释。
3.多行注释当中可以定义单行注释。
4.多行注释当中不可以定义多行注释。
www
what :这是什么
why :为什么要做呢,为什么要这么做
how :如何去做
编写代码的过程,明确思路,代码仅仅是思路的体现。
1.我要做什么?
2.我为什么要这么做呢?
3.我要如何做呢?
4.用什么步骤来实现呢?
5.用代码来体现。
思想在代码当中的体现,通过注释。
23.常量
不能够被改变的数值。
JAVA当中对于常量进行了分类:
1.整数常量 所有整数 12 38 25 -9
2.小数常量 所有小数 3.14 6.66 -9.9
3.布尔型常量 比较特殊 只有两个数值 true false
4.字符常量 将一个数字,字母或者符号采用单引号('')标识 'a' '1' '+'
5.字符串常量 将一个或者多个字符用双引号("")标识 "Hello World!!" "13" "今天天气好晴朗!!"
6.null常量 只有一个数值就是 null 。
整数常量:有四种表现形式
二进制: 逢2进1 只有0和1
十进制: 逢10进1 包括0~9
八进制: 逢8进1 包括0~7 三个二进制位为一组
十六进制: 逢16进1 包括0~9 A~F 四个二进制位为一组
十进制转换成二进制的方法:
十进制数值除以2取余数,直到商为0为止。
二进制转换成十进制的方法:
乘以2的次幂,次幂从0开始,随着位数的递增而递增。
8的二进制是多少 1000
16的二进制是多少 10000
10011的十进制是多少:
1*1+1*2+0*4+0*8+1*16 = 16+1+2 = 19
1010 ==》10
111 ==》7
1111 ==》15
3----》11
9----》1001
同一个数值在不同的计数方式当中表现为不同的数。
八进制:必须以0开头 0134
十六进制:必须以0X或者0x开头 0x134
24.变量 :变化的数值
//变量就是内存当中的存储区域。
变量声明的三要素: 类型 名称 数值
变量在内存当中的好处:数值是可变的。
什么时候定义变量呢?
一旦数据不确定了,就定义一个变量,来作为存储的空间,以便于随时的改变。
为什么要定义变量?
用来不断的存放同一种数据类型的常量,变量的空间可以不断的重复使用。
声明变量的语法格式:
数据类型 变量名[=初始化值];
初始化值就是第一次赋得值,是可以不断改变的。
变量的数据类型的分类:
数据类型: 基本数据类型:整数类型:byte short int long
浮点数类型:float double
字符类型: char
布尔类型: boolean
引用数据类型: 类(class) 接口(interface) 数组(array)
/*Java中所有的基本数据类型都有固定的存储范围和所占内存空间的大小,而不受具体操作系统的影响,
以保证Java程序的可移植性 。*/
整数类型的取值范围和内存空间。
byte 1字节 8位 -128 ~ 127
short 2字节 16位 -215 ~ 215-1
int 4字节 32位 -231 ~ 231-1
long 8字节 64位 -263 ~ 263-1
Java语言的整型常量默认为int型,如:int i = 3;
要声明long型可以加‘l’或‘ L’,如:long l = 3L;
float 4字节 32位 -3.403E38~3.403E38
double 8字节 64位 -1.798E308~1.798E308
Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F。
boolean类型适于逻辑运算,一般用于程序流程控制
boolean类型数据只允许取值true或false,不可以用0或非0的整数替代true和false。
从声明变量的位置
变量的分类:成员变量和局部变量
成员变量:方法外部,类的内部定义的变量
局部变量:方法或者语句块内部定义的变量。
局部变量的作用域:是他所在的方法或者语句块。
在程序当中的方法被调用时,局部变量才会被创建并使用,随着方法的退出,局部变量将销毁。
成员变量的作用域是整个类体。
特别注意:类体之外不能有变量的声明
25.基本数据类型之间的转换分为以下两种
自动类型转换
强制类型转换
boolean 类型不能转换成任何其它数据类型。
自动类型转换:
容量小的类型自动转换成容量大的数据类型
byte,short,intlongfloatdouble
char
强制类型转换:
容量大的类型转换成容量小的数据类型时,要加上强制转换符
1.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的值。
2.表达式:
表达式是符合一定语法规则的运算符和操作数的序列
表达式的类型和值
对表达式中操作数进行运算得到的结果称为表达式的值
表达式的值的数据类型即为表达式的类型
表达式的运算顺序
首先应按照运算符的优先级从高到低的顺序进行
优先级相同的运算符按照事先约定的结合方向进行
3.语句:
语句的结构:
顺序结构 :从上到下依次执行,不会缺省语句,也不会打乱顺序
选择结构(分支结构) :if...else switch...case
循环结构 for while do
{
}
while ();while
4.if语句
语法格式:
if语句第一种格式 if(条件表达式){}
条件表达式结果为boolean型,如果满足条件,就执行语句
if第二种表现格式:if (条件语句){…}else{…}
如果。。。。否则。。。。意味着这两个语句块,肯定有一个会执行
三目运算符:其实是if...else的简写格式
好处:简化书写,增强代码的可读性
局限性:当if...else语句块,执行完有具体结果的时候,我们才能改写成三目运算符。
因为三目运算符是一个运算符,只要是运算符运算完就必须有结果。
单条语句:
因为if当中所包含的代码只有一条,他是单条语句,所以可以省略大括号。
省略了if当中的大括号,他只能去控制离他最近的那条语句
if的第三种格式
if (条件语句){…}else if(条件语句){…}....else{…}
特点:
1.虽然他有多行代码,但是整体也是单条语句。(只有一个结果)
2、虽然他由多个代码块组成,但是只会执行其中的一个
4,课堂练习:
需求1:根据用于指定数字,打印该数字所属的星期文字提示。
需求2:根据用于指定数字,打印该月份所属的季节。
(3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季)
需求3:不及格,及格,中,良,优秀,用if语句实现。
<60 60 70 80 90 100
5.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语句有关规则
表达式的返回值[也就是switch()中的内容]必须是下述几种类型之一:
int, byte, char, short;枚举(1.5版本) String(1.7版本)
case子句中的取值必须是常量,且所有case子句中的取值应是不同的;
default子句是可选的;
break语句用来在执行完一个case分支后使程序跳出switch语句块;
switch语句结束的情况有两种:
1.执行到了break语句
2.执行到了switch语句的结尾
if语句和switch语句的使用场景:
1.如果对于具体的数值进行判断,使用if语句可以,使用switch语句也可以。建议使用switch语句。
因为switch语句会把所有的备选答案加载进入到内存当中,选择的效率会更高。
2.如果对于数据的区间进行判断,使用if语句。
3.如果表达式的结果是boolean类型。毫无疑问,使用if语句。
6.循环结构
while...
do...while...
for....
循环:一圈又一圈 一遍又一遍
7.while语句语法格式:
while(条件表达式语句){
循环体语句;
}
在循环条件满足的情况下,反复执行特定代码
既要给定循环的条件,也要控制循环的次数,如果不控制循环的次数,程序就会编程无限循环,然后不停的转。
什么时候使用循环结果?
当对于一段特定的代码需要反复执行时,就使用循环。
循环的四要素:
1.变量
2.条件表达式
3.循环体内容
4.迭代部分
do....while的语法格式:
do{
循环体语句;
迭代部分;
}while(条件表达式语句);
8.while语句和do...while语句的区别:
(1).while语句的循环体在循环条件的下边,而do...while语句的循环体在循环条件的上边。
while循环条件不满足时,循环体一定不会被执行。
do...while循环无论条件是否满足,do当中的循环体都会至少执行一次。
(2).do...while循环while表达式之后需要加上分号,而while循环表达式之后不需要加分号。
分号:表示功能性语句的结束
大括号:表示语句之后还有执行体。
1.for循环语法格式:
for (初始化表达式1;循环的条件表达式2;循环后的表达式3){
循环体语句;
}
初始化表达式1 :for循环语句当中第一个执行的表达式,通常做初始化变量的操作
循环的条件表达式2:判断是否循环的依据
循环后的表达式3:本次循环结束之后要执行的内容,通常做迭代的操作
循环体语句;反复执行的部分。
变量的作用域:
在方法中或者语句当中定义的变量都称之为局部变量。
在语句当中定义的变量,会随着语句的完成,就会被内存释放,在语句外不能访问到。
在方法当中定义的变量,会随着方法的执行结束,也会被内存释放,在其他方法当中不能访问到。
2.for循环多种体现形式
//同时初始化两个变量,判断其中一个变量的条件,如果满足条件,两个变量同时自增。
for (int x=1,y=1;x<3 ;x++,y++ )
{
System.out.println("x="+x+",y="+y);
}
//x=1,y=1
//x=2,y=2
for (; ; )
{
//for循环语句当中最简单的无限循环表达式,条件表达式的结果默认是true
//如果没有循环条件,就是默认满足条件的。
}
while (true) //条件表达式的结果是boolean类型的,如果写成true,就一致满足条件,那么循环体内容就一直执行
{
//while语句的无限循环的基本格式
//无限循环何时用?当无法确定循环的次数时,就使用无限循环
}
do
{
//do...while语句的无限循环的基本格式
}
while (true);
3.循环的嵌套
4.break:跳出
应用场景:
1.switch语句当中case语句的末尾。
2.循环语句当中
break语句在循环当中有中断循环的作用,但是单独执行break语句时,下面不要定义任何语句,
因为它执行不到,会报编译错误,无法访问的语句。
break语句的注意事项:
1.在单层循环当中,直接写break,就从循环当中跳出来了。同时不执行break之后的内容。
不要直接在break语句的后面写代码。
2.如果在循环当中对于break语句的执行进行了条件判断,那么就可以在break之后加上语句了。
3.在双重循环当中,在内循环当中写入break语句,默认是跳出内循环的。
4.在双重循环当中,在内循环当中写break语句,break语句的右边有内容,那么就比较循环关键字
的标记内容,根据标记跳出指定的循环。
5.continue :继续
应用场景:在循环语句当中。
作用:结束本次循环,继续下一次循环。
特点:当continue单独执行时,下面不要定义语句,因为它执行不到,编译会报错。
continue语句的注意事项:
1.在单层循环当中,直接写continue,就接结束了本次循环。同时不执行continue之后的内容。
不要直接在continue语句的后面写代码。
2.如果在循环当中对于continue语句的执行进行了条件判断,那么就可以在continue之后加上语句了。
3.在双重循环当中,在内循环当中写入continue语句,默认是结束本次内循环的。
4.在双重循环当中,在内循环当中写continue语句,continue语句的右边有内容,那么就比较循环关键字
的标记内容,根据标记决定应该结束的循环。
6.函数
函数的定义
什么是函数?
类当中具有特定功能的独立小程序。
每一个函数都有自己独立的区间就是它单独存在的地方,把函数所具备的功能就定义在这个区间当中。
什么时候需要定义函数呢?
发现打印矩形,打印一次就要写一次双重for循环代码,特别的麻烦,代码很冗余,复用性很差。
为了提高代码的复用性,可以把打印矩形的代码封装起来,通过大括号来封装{},为了方便下次调用,
就给封装的代码块取个名字,下次打印矩形的时候直接找这个名字对应的代码就可以了。
函数的语法格式:
[修饰符1 修饰符2 …] 返回值类型 方法(函数)名(形式参数(参与运算的参数)列表){
程序代码;
return 返回值;
}
修饰符:通过关键字对被修饰的内容加上了指定的含义。
返回值类型:先明确什么是返回值,函数通常表现为一个功能,是功能都有对应的结果,而返回值就是对应的结果。
java的任何数据都有类型,所以返回值也有类型。
方法名(函数名):函数是一个代码区间这个区间要被使用,必须要有名字,则为函数名
形式参数列表(参数类型 参数名,参数类型 参数名....):
参与运算的数据类型,就是指定的变量的类型,指明接收的具体的数据类型
return 返回值:当功能结束,我们会将对应的结果返回,并结束这个功能。
功能定义一般都有结果,但是也有特殊的情况,没有这个功能对应的结果,返回值没有特定的内容。
此时就使用java当中特殊的关键字:void 来表示返回值类型。
主函数是程序的入口,它的存在保证了程序的独立运行,它是被JVM所调用的,所以就需要在主函数当中调用自己写
的功能函数、需要使用函数名
注意:
函数之间是并列关系,不存在改变了定义了位置就改编执行流程的问题。
但是不能把函数定义在函数当中,函数当中只能调用函数。
修饰符的数量是可变的,可以有0~n个
在主函数当中调用其他功能函数的方法:
1.其他功能函数是被static修饰符修饰的,在主函数可以直接调用函数名。
2.其他功能函数不是被static修饰符修饰的,就需要在主函数当中创建对象,通过使用对象调用函数名。