
java程序设计
(1)执行原理:先执行()中的循环变量初始化,再判断循环条件是否成立,true-成立,则执行循环体,再执行循环变量的改变,然后再判断循环条件\…但是:如果开发人员将源代码的内容更改了,需要重新的编译.java文件,生成一个新的.class文件,再运行新的.class文件,才能看到改变之后的结果。(1)&&:逻辑与,两端都必须是布尔表达式(结果为boolea的表达式),只有当两端同时为true,只要
Java语言程序设计基础
第一章java历史及环境的搭建
Java是一种计算机编程语言.Java是一种后端的编程语言.(前端开发是静态页面,数据不变;后端开发是实现动态页面)
一、java语言的历史
1、1995年,sun公司推出的面向对象的编程语言,被甲骨文公司收购.
2、1996年推出JDK .
Java语言发展方向:Java SE(Java语言核心基础)、javaEE(企业级应用)、javaME(通信开发).
二、Java语言的特点
1、简单性:相对c、c++
2、开源性:(源——源代码,开发人员编写的程序)开放源代码
3、编程资源广泛性:很多的编程爱好者进行研究,大厂的推手
4、跨平台性:可以在不同的操作系统上运行(OS->windows+macos->后端开发 Linux->部署环境)
5、面向对象性
三、Java运行机制
1、Java运行机制:先编译后解释运行
编译:将Java的源文件(.java 结尾的文件)->通过编译器->生成.class文件(字节码文件/二进制文件) 简单:将.java->生成.class文件
运行:.class文件->通过解释器->逐行解释并运行(将结果展示给用户)
2、注意:实际运行的时候执行的为.class,java源码只需要编译一次,可以运行多次.
Java:一次编译,多次运行
但是:如果开发人员将源代码的内容更改了,需要重新的编译.java文件,生成一个新的.class文件,再运行新的.class文件,才能看到改变之后的结果
四、环境搭建
1、名词解释:
(1)JVM:java虚拟机,作用屏蔽不同操作系统之间的差异性
(2)JRE:java运行时的环境,JRE=Java虚拟机+解释器
(3)JDK:java开发工具包,JDK=JRE+编译器+类库+工具
注意:Java开发必须安装对应的JDK软件
2、JDK的安装
安装+环境变量配置
五、第一个java程序[开发重点-基础]
1、创建一个java源文件:以.java结尾
2、定义类:
class:类,代表代码容器
class 类名{
public static void main(String[] args){
//程序入口
}
}
注意:
(1)main函数也称为主函数,为程序的入口
(2)一个类中最多只能定义一个主函数
(3)System.out.println(“展示给用户的信息”);//控制台打印输出
3、编译和运行
(1)先编译:javac 源文件名字.java
javac Hello.java
注意:通过编译将.java生成对应的.class文件,但是.class文件的名字和类别一致
(2)再运行:java 类名
java First
注意:源文件中内容一旦发生改变,则需要重新的编译,再运行class文件.源码文件在编译之前,必须先保存!!!!
4、细节:
(1)控制台打印输出:
System.out.println(“”); //控制台打印输出,并换行
System.out.print(“”);控制台打印输出,不换行
(2)一个源文件中可以定义多个类,但是类之间不能重名,编译之后,每个类都会生成独立的对应 .class文件
(3)一个源文件中可能存在多个main函数,原因:一个源文件中可以定义多个类,每个类中都以定义一个main函数,但是 一个类中最多一个 main函数
5、公共类
(1)、public:公开的、公共的
(2)、被public修饰的类称为公开类、公共类
(3)、语法:
public class 类名{
…
}
(4)、要求:公开类的类名必须和源文件名相同
(5)、一个源文件中公开类最多可以定义一个,原因:公共类的类名必须和源文件相同,类之间不能重名
六、打包(package)
1、作用:将不同类别的文件进行分门别类进行管理,便于查找和维护
2、语法:
package 包名;
package 包名1.包名2.包名3
3、位置:源文件的第一行有效语句
注意:一个java源文件中最多只能定义一个package语句
4、带包的编译和运行:
编译:javac -d.源文件名.java
运行:java 包名.类名
java 包名1.包名2.包名3.类名
七、良好的编程习惯[需要特别注意,开发细节]
1、良好的格式习惯(提高代码的可读性)
(1)层级之间要有严格的缩进,通常为一个Tab键(4个空格)
(2)一行写一句代码
2、良好的标识符命名习惯
标识符:通常的理解为起名的地方,包名、类名、源文件名等
(1)硬性要求:语法要求->必须要遵循的,否则编译报错
A.标识符只能以数字、字母、下划线(_)、$组成,但是不能以数字开头
B.java中的标识符严格区分大小写
C.java中的标识符没有长度限制
D.不能使用java中的关键字、保留字(goto、const)、特殊符号命名(null、true、false)
(2)软性要求
a、望文生义
b、类名:每个单词首字母大写,其他单词小写
c、变量名/函数名/方法名:第一个单词首字母小写,其他单词首字母大写,被称为驼峰命名
d、包名:每个单词都小写:com.day1
e、常量:全大写
3、良好的注释习惯
注释:解释代码含义的语句,提高代码的可读性
分类:
a.单行注释://,只能写一行解释的内容
B.多行注释:/*
可以写n行解释内容
*/
注意:单行注释中不可以嵌套多行注释;但是多行注释可以嵌套单行注释,注释不参与编译
第二章 变量、数据类型、表达式
一、变量
1、概念:是计算机中一块存储空间,是存储数据的基本单元
2、变量的组成部分:数据类型、变量名、数据
语法:数据类型 变量名 =数据;
3、变量的定义:
(1)先声明,再分配空间:
声明:数据类型 变量名;
int a;
赋值:变量名 = 值;
a=3;
(2)声明的同时并赋值:
数据类型 变量名=值;
int b=5;
(3)同时定义多个相同数据类型的变量:
数据类型 变量1,变量2,变量名3=值,变量名;
int c,d,f=9;
二、数据类型
1、基本数据类型(原始数据类型、简单数据类型)
B->KB->MB->GB->TB
进制:1024
(1)整数类型
byte 1B -128~127
short 2B -32768~32767
int 4B -2147483648~2147483647
long 8B -922京~921京
注意:long的字面值后面需要加L或是1,建议使用L,区分字母l和数值
(2)小数类型
float:4B,单精度,字面值后面必须加f/F
double:8B,双精度,字面值后面可以加D/d,也可以不加
(3)字符类型
char,2B
a.字面值的形式一:使用‘’引起来的一个字符
b.字面值的形式二:使用整数进行存储,0~65535
(4)布尔类型
boolean 字面值:true/false
true-代表关系成立,为真
false-代表关系不成立,为假
2、对象数据类型(引用类型)
(1)对象:数组、集合、接口等都是对象类型的数据;
a.字符串:由双引号引起来的一个或多个字符
b.String str=“hello”
三、运算符
1、算数运算符
+ - * / %
注意:Java中的+有两种含义:
(1)加法:+两端为数值类型
(2)拼接:+两端有一端为字符串类型,则为字符串的拼接
2、赋值运算符
= += -= *= /=
3、关系运算符
>:大于
>=:大于等于
<:小于
==:小于等于
!=:不等于
4、逻辑运算符
(1)&&:逻辑与,两端都必须是布尔表达式(结果为boolea的表达式),只有当两端同时为true,只要有端为false,则结果为false
(2)||:逻辑或,两端只要有一端为true,结果就true,两端同时为false,结果才为false
(3)!:逻辑非,在原来的结果基本上取反
四、scanner-扫描仪
1、作用:实现人际交互,可以让用户输入相关信息
2、使用:
(1)导入包:import java.util.Scanner;
(2)创建scanner对象
Scanner sc = new Scanner (System.in)
(3)使用scanner:
int n = sc.nextInt();
3、scanner的其他应用
(1)int a=sc.nextInt();//一个整数
(2)字符串:String str=sc.next();
(3)小数:double d=sc.nextDouble();
(4)字符:char c=sc.next().charAt(0);
第三章 分支结构
一、if分支
1.if分支的基本语法
if(条件判断){
//条件成立,执行对应的语句
}
执行的原理:如果if后面()中的条件成立- true,则执行{}中的语句;条件不成立- false,则执行{}后面的内容
2、if...else的基本语法
if(条件判断){
//条件成立,执行对应的语句
}else{
//否则执行的语句
}
执行的机制:如果条件成立,则执行if{}中的内容;否则执行else{}中内容
3、多分支if结构
if(条件判断){
语句1
}else if(条件判断2){
语句2
}else if(条件判断3){
语句3
}else {
语句4
}
执行流程:从上往下一次判断,哪个条件成立,则执行对应{}中的语句
4、嵌套的if结构
if{
if(条件判断){
语句1
}else if(条件判断2){
语句2
}else{
语句
}
}
执行流程:先判断外层的if条件是否成立,成立再判断内层的if条件
二、等值分支结构
1、语法:
switch(表达式){
case 值1:语句;
case值2:语句;
…
default:语句n;
}
2、细节
(1)break:终止、结束switch..case结构,防止case穿透
(2)switch()中表达式的结果类型为:byte、short、int、char、string(jdk 1.7开始)
三、局部变量
1、概念:定义在函数内部的变量
2、特点:
(1) 局部变量必须先赋值再使用
(2) 作用范围:从定义位置开始,到定义它的代码块结束
(3)在重合的作用范围内,不允许命名冲突
第四章 循环结构
一、理解
1、概念:通过某个条件,重复并且有规律的执行一段代码
2、循环组成部分:循环的初始值、循环的条件、循环变量的改变、循环体
3、循环分类:while循环、do..while循环、for循环
二、while循环
1、语法
while(布尔表达式/判断条件- true/false){
//循环体
//循环变量的改变
}
执行原理:先执行循环变量的初始化,再判断循环条件,条件满足—true,则执行循环体,同时循环变量发生改变,再次的判断循环条件……直到循环条件结果为false,跳出循环
2、细节
(1)循环变量的初始化数据必须给的合理
(2)特点:循环次数0~n次,先判断,再运行
(3)循环的变量改变没有执行,可能会导致出现死循环
(循环无穷尽执行,command+c结束)
三、do..while循环
1、语法
do{
//循环体
//循环变量的改变
}while(循环判断条件)
2、细节
(1)执行原理:先执行,再判断,执行的次数为1~n次
(2)注意:不管初始数据给的是否合理,循环体至少执行一次
四、for循环
1、语法
for(循环变量的初始化;判断条件;循环变量的改变){
//循环体
}
2、细节
(1)执行原理:先执行()中的循环变量初始化,再判断循环条件是否成立,true-成立,则执行循环体,再执行循环变量的改变,然后再判断循环条件\…直到循环条件不成立,则跳出循环结构
(2)执行特点:先判断,再执行
五、循环的控制语句
1、break:终止循环结构
2、continue:中止本次循环,从而进入下一个循环
六、循环的嵌套
1、概念:在一个循环结构中,定义了另一个完整的循环结构
2、特点:先判断外层循环条件,再执行内层循环
循环的次数=外层循环的循环次数*外层循环的循环次数
第五章 函数
一、函数
1、引言:目前代码存在的问题:代码冗余,可读性和可维护性低
2、函数:执行一段特定功能的代码,可以通过名字进行反复使用
3、函数使用的流程:
(1)定义函数
a、提取特定功能的代码
b、命名
(2)使用函数:通过名字进行函数的调用
二、函数的定义
1、位置:定义在类以内,其他函数在外面
2、函数的定义:
(1)函数的声明:public static void a()
(2)函数的实现:{//函数体}
3、参数
(1)形式参数:在函数定义时,约定的数据类型
public static void 函数名(数据类型 参数名1){
}
(2)实际参数:在函数被调用时,给定的具体的数据,实际参数给形参赋值
4、返回值:
返回值:函数调用者和函数之间的一种约定
语法:public static 返回值类型 函数名(形参){}
返回值类型:
(1)void:代表函数没有任何结果返回
(2)返回值为8种基本数据或事引用类型:代表函数必须给调用者返回相对应的数据结果,代表函数必须有return xx;
注意:return的两个作用:
(1)将结果返回给调用者
(2)结束当前的函数
三、函数的使用
1、调用:通过函数名字进行使用函数对应功能
2、语法:函数();
3、有参数的调用:
函数名(数据1,数据2);
//调用时的给定的数据称为实际参数,实际参数的作用给形参赋值,实参的个数、数据类型、顺序必须和形参相同
4、具有返回值的函数调用:
数据类型 变量名=函数名(实际参数);
第六章 数组
一、理解
1、引言
目前程序存在的问题:一个变量只能存储一个数据,而且没有办法进行统一操作
2、数组
一组连续的存储空间,可以同时存储多个相同类型的数据,并且可以进行统一操作
3、数组的注意点
(1)同类型
(2)确定数组长度
二、数组的定义
1、先声明,再分配空间
(1)声明:确定数据类型
数据类型[] 数组名 ;
int [] a;
int a[];
int []a;
(2)再分配空间:确定数组的长度
数组=new 数据类型[长度];
a=new int[5];
0 |
1 |
2 |
3 |
4 |
下标 |
2、数组的细节
(1)数组的下标从0开始,依次为1,2,3…,最大的下标为数组的长度-1
(2)数组的遍历:
for(i=1;i<数组长度;i++){
//通过 数组名[i];
}
(3)java.lang.ArrayIndexoutofBoundsException当利用数组的下标访问数组时,给定下标超过有效下标时,编译通过,但是运行报错,错误信息为下标越界
(4)获取数组的长度:数组名字.length
(5)数组具有默认值:
整数类型:0
小数类型:0.0
布尔类型:false
字符类型:空字符 ‘1u0000’
对象类型:null
3、数组的定义
(1)先声明,再分配空间:
数据类型[] 数组名;
数组名=new 数据类型[长度];
(2)声明的同时,分配空间:
数据类型[] 数组名=new 数据类型[长度];
int[] a=new int[3];
(3)声明的同时,初始化:
数据类型[] 数组名=new 数据类型[]{值1,值2};
注意:值的个数决定了数组的长度,[]中不能定义长度
(4)声明的同时,初始化:
数据类型[] 数组名={值1,值2,值3};
注意:声明和初始化必有一起完成
补充:
三元运算符: 语法:布尔表达式?表达式1:表达式2 执行原理:如果表达式的结果为true,则执行表达 式1,否则执行表达式
int a = 3;
int b = 4;
int r = a>b? a+1:b+1; System.out.println(r); // 5
char-> int -> long -> float -> double
byte->short->long->float->double
更多推荐
所有评论(0)