1、什么是编程?
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步地区工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
2.Java语言概述,历史、特点
是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级语言。是一种面向Internet的编程语言。
随着java技术在web方面的不断成熟,已经成为web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Java5.0之后的三大技术框架
J2EE(java 2 platform enterprise edition)企业版
在jdk5.0版本之后称为javaee,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如servlet jsp等,主要是针对于web应用程序开发。
J2SE(java 2 platform Standard Edition)标准版
在jdk5.0版本之后称为JavaSE,这是在基础阶段主要学习的内容,也是java的基础,以后不管是android开发或者是物联网+云计算的开发,都是建立在javaSE基础上的,一次该技术是java的最核心技术,是传智播客基础班的主要上课内容。
J2ME(Java 2 Plaformt Micro Edition)小型版
在jdk5.0版本之后称为JAVAME,该技术多应用于一些电子产品的嵌入式开发,以前在手机开发上应用的也比较多,但是随着智能手机的发展,现在手机应用程序(比如Android程序)的开发已经不再使用该技术。
3.什么是跨平台性?原理是什么?jvm
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
实现原理:java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意:不是能在所有的平台上运行,关键是该平台是否能够安装相应的虚拟机)。
4.Jre和Jdk的区别
Jre:(java runtime environment),java运行环境。包括java虚拟机(jvm java virtual machine )和java程序所需的核心类库等。如果想要运行一个开发好的java程序,计算机只要安装jre即可。
Jdk:(java development kit java )开发工具包,jdk是提供SEIjava开发人员的,其中包含了java的开发工具,也包括了jre,所以安装了jdk,就不用安装jre了;
其中的开发工具:编译工具:javac.exe
打包工具:jar.exe
简单而言:使用jdk开发完成的java程序,交给jre去运行
5.java虚拟机
Java virtual machine ,简称jvm
它是运行所有的java程序的抽象的计算机,是java语言的运行环境,它是java最具吸引力的特性之一,jvm读取并处理编译通过的与平台无关的字节码(class)文件。
Java编译器针对jvm产生class文件,因此是独立于平台的;
Java解释器负责将jvm的代码在特定的平台上运行;
Java虚拟机是不跨平台的;
6.java程序运行机制
编译:javac文件名.文件名后缀名
运行:java 类名
7.java注意的地方
Java语言拼写上严格区分大小写
一个java源文件可以定义多个java类,但其中最多只能有一个类被定义成public类;
若源文件中包含了public类,源文件必须和该public类同名;
一个源文件中包含了很多个java类时,编译后会产生很多份字节码文件,即每个类都会生成一份单独的class文件,而且,字节码文件名和其对应的类名相同;
总结:一个java源文件中只定义一个类,不同的类使用不同的源文件定义;
将每个源文件中单独定义的类都定义成public的;
保持java源文件的主文件名与源文件的类名一致;
8.java语法格式
任何一种语言都有自己的语法规则。Java也一样,既然是规则,那么知道其是如何使用就可以了。
代码都定义在类中,类由class来定义,区分public class和class;
Main方法的作用:
程序的入口,保证程序的独立运行,被jvm调用
9.代码注释:单行// 多行/* */ 文档注释/***/
单行注释 //后到本行结束的所有字符会被编译器忽略
多行注释 /* */之间的所有字符会被编译器忽略
文档注释 /***/之间的所有字符会被编译器忽略,java特有的,用于生成文档
10.java中的标识符
可简单理解为:在java程序中为了增强阅读性而自定义的名称,如:类名、方法名、变量名等
命名规则:(1)由字母(可以是中文,外文)、下划线、$组成,不能以数字开头;
(2)大小写敏感;
(3)不能使用java中的关键字和保留字;
(4)别用java API中的类名作为自己的类名。
11.java中的变量和常量
变量的概念:占据着内存的某一个区域,该区域有自己的名称(变量名)和类型(数据类型);
该区域的数据可以在同一类型范围内不断变化。
为什么要定义变量:用来不断地存放同一类型的常量,并可以重复使用。
使用变量注意:变量的作用范围和初始化值。
定义变量的格式:
数据类型 变量名 =初始化值;
注意:格式是固定的。
作用范围:从定义开始到定义它的代码块结束。
同一个范围内,不允许多个局部变量命名冲突。
12:java中局部变量和成员变量:
局部变量:是声明在类的方法体中的变量,局部变量使用前必须初始化值;局部变量没有默认初始化值;局部变量的作用域是从定义开始到定义它的代码块结束;
成员变量:在方法体外,类体内声明的变量,又称字段(field)或全局变量;(其实java中没有全局变量,由于java是面向对象语言,所有变量都是类成员)
成员变量的作用域是在整个类中;
13.基本数据类型
在数据类型中,最常用的也是最基础的数据类型,被称为基本数据类型。可以使用这些类型的值来代表一些简单的状态;
Java语言的基本数据类型总共有4类,8种:
整数型:byte字节型、short短整型、int整形、long长整型
小数型:float单精度浮点型、double双精度浮点型
字符型:char字符型
布尔型:boolean布尔型
定点类型:整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从四种类型中挑选合适的,若没有特殊要求,一般选用int型,4种整数类型的主要区别主要在每个数据内存中 占用的空间大小和代表的数值的范围;
浮点类型:小数型是一类代表小数值的类型。当需要代表一个小数的值时,可以根据需要从两种类型中挑选合适的,若没有特殊要求,一般选择double型;
由于小数的存储方式和整数不同,所以小数都有一定的精度,所以在计算机中运算时不够精确。根据精度和存储区间的不同,设计了两种小数类型:
单精度浮点型:float,占用4个字节空间
双精度浮点型:double,占用8个字节空间
字符型:字符型代表特定的某个字符,计算机中都是以字符集的形式来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算机完成从编号转成对应的字符的工作,java语言为了更加方便国际化,使用Unicode字符集作为默认的字符集,该字符集包含各种语言中常见的字符。在程序代码中,字符使用一对单引号加上需要表达的字符来标识,也可以用字符编码即一个非负整数进行表示。char类型占用2个字节的空间。
布尔型:代表逻辑中的成立和不成立,java语言中使用关键字true代表成立,false代表不成立,布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,java把逻辑的值用布尔型来表达;布尔型占用1个字节的空间。
14.基本数据类型向上转换和向下转换
向上转换:整数,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:容量小的类型可以自动转换成容量大的数据类型(也叫隐式转换);
byte,short,char---->int--->long--->float---->double
byte,short,char之间不会相互转换,他们在计算时首先会转换成int类型。
boolean类型不可以转换成其他基本数据类型。
向下转换:整数,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
容量大的类型转换成容量小的类型必须进行强转(也叫显式类型转换)
15.java的运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
分为:算术运算符:+ - * / %
赋值关系符:= += -= *= /= %=
关系运算符:< > <= >= !=
条件运算符:& && | || ! ^
位运算符:& | ^ ~ << >> <<< >>>
总结:& 和&& :但与时,两边都参与运算,双与时,若左边为真,右边参与运算;若左边为假,右边不参与运算;
| 和|| :单或时,两边都参与运算;
双或时,若左边为真,右边不参与运算;
^:当左右都相同时,为false;当左右不同时,为真;
16.表达式和三目运算符
是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;
表达式的类型和值:对表达式中的操作数进行运算得到的结果是表达式的值;
表达式的数据类型即为表达式的类型;
表达式的运算顺序:应按照运算符的优先级从高到低的顺序进行;
优先级相同的运算符按照事先约定的结合方向进行。
三目运算符的语法格式:
X?y:z;
其中,x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。
17.流程控制语句
顺序结构 分支结构 循环结构 控制循环结构
顺序结构:如果代码里没有流程控制,程序是至上而下逐行执行的,一行语句执行完后继续执行下一行语句,直到程序结束。
If语句:
基本语法:if(表达式){方法体}else if(表达式){方法体}else{方法体}
三种格式:
(1)if(条件表达式){执行语句;}
(2)if(条件表达式){执行语句;}else{执行语句;}
(3)if(条件表达式){执行语句;}else if(条件表达式){执行语句;}……else{执行语句;}
switch控制语句:
格式:
Switch(表达式)
{
case表达式可能的结果1:
执行语句;
break;
case表达式可能的结果2:
执行语句;
break;
……
default:
执行语句;
break;
}
注意:case与default之间没有顺序。
结束switch语句的两种方法:遇到break,switch语句执行结束。 如果匹配的case或者default没有对应的default,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以运行的语句,直到遇到break或switch结束为止。——switch语句的穿透性
Switch语句只能使用byte、char、short、int、四种基本类型以及它们的包装类和枚举
18.三大循环结构
用于处理需要重复执行的操作;
根据判断条件的成立与否,决定程序段落的执行次数,这个程序段落被称为循环体;
While 事先不知道循环执行多少次
do while 实现不知道执行多少次,至少执行一次(限制性一次,再进行判断)
for 需要知道循环次数
while格式
while(条件表达式值为true)
{
执行语句;
}
do while语句格式:
do
{
执行语句;
}
while(条件表达式为true);
循环里的条件表达式不能直接写false或直接写结果为false的表达式,不过可以使用变量来传递false值。
for循环结构
格式:
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))
{
执行语句;(4)
}
执行顺序:(1)--(2)--(4)--(3)--(2)--(4)--(3)
备注:(1)for循环里的3个表达式的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
(2)while与for可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放了,而while循环使用的变量在循环结束后还可以继续使用。
(3)最简单无限循环格式:while(true),for ( ; ; ),无限循环存在的原因是并不知道循环多少次,而是根据某些条件来控制循环。
19.嵌套循环与流程控制
嵌套循环:循环里面套循环;
假设外循环的循环次数是m次,内循环的此数是n次,那么内层循环的总循环次数需要m*n次
流程控制
break语句、continue 语句
break 终止该层循环
continue 跳过该层循环
注意:(1)若这两个语句离开应用范围,存在是没有意义的;
(2)这两个语句后面都不能有语句,因为执行不到;
(3)continue语句是跳出本次循环,继续下次循环;
(4)标签的出现,可以让这两个语句作用于指定的循环;