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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐