手机版 欢迎访问it开发者社区(www.mfbz.cn)网站

当前位置: > 开发

Java程序设计基础

时间:2021/6/5 17:02:16|来源:|点击: 次

Java程序设计基础

      • Hello World
      • 环境变量
      • 基本语法
      • Java标识符
      • 变量的概念
      • 基本数据类型
      • 控制台的输入输出
      • Java运算符
      • 数据类型转换
      • if语句
      • if...else语句
      • if...else if语句
      • 嵌套if语句
      • switch结构
      • 循环之while语句
      • 循环之do...while语句
      • for循环
      • 跳转语句
      • 理解类和对象
      • Java中的类和对象
      • 对象的创建和使用
      • 构造方法
      • 方法
      • 无参数无返回值的方法
      • 有参数无返回值的方法
      • 成员变量和局部变量
      • 有参数有返回值的方法
      • 数组的定义和使用
      • 书籍系统


Hello World

首先新建一个文件HelloWorld.java,文件名需与类名一致

public class HelloWorld{
public static void main(String[]args){
System.out.println("Hello World");
}}

要编译运行Java文件,需要用到javac和java两个命令
javac后面跟着的是java文件的文件名,例如HelloWorld.java
这个命令用于将java源文件编译为class字节码文件,如:javac HelloWorld.java
运行javac命令后,如果成功编译没有错误的话,会出现一个HelloWorld.class的文件
java后面跟着的是java文件中的类名,例如HelloWorld就是类名,如:java HelloWorld
java命令后面不要加.class


环境变量

变量设置参数如下
变量名:CLASSPATH
变量值:lib目录
变量名:PATH
变量值:bin目录
测试JDK是否安装成功
Win+R输入cmd打开命令行提示符
然后输入命令:java-version、java、javac几个命令


基本语法

大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的
类名:对于所有的类来说,类名的首字母应该大写
如果类名由若干单词组成,那么每个单词的首字母应该大写,例如MyFirstJavaClass
方法名:所有的方法名都应该以小写字母开头
如果方法名含有若干单词,则后面的每个单词首字母大写
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java(如果文件名和类名不相同则会导致编译错误)
主方法入口:所有的Java程序由public static void main(String[]args)方法开始执行


Java标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符
所有的标识符都应该以字母(A-Z或者a-z),美元符( ) 、 或 者 下 划 线 ( ) 开 始 首 字 符 之 后 可 以 是 字 母 ( A − Z 或 者 a − z ) , 美 元 符 ( )、或者下划线(_)开始 首字符之后可以是字母(A-Z或者a-z),美元符( 线AZaz,)、下划线(_)或数字的任何字符组合
关键字不能用作标识符
标识符是大小写敏感的


变量的概念

变量:程序运行期间内容可以发生改变的量
创建一个变量并且使用的格式:
数据类型 变量名称;
//创建了一个变量
变量名称=数据值;
//赋值,将右边的数据值,赋值给左边的变量
一步到位的格式:
数据类型 变量名称=数据值;
//在创建一个变量的同时,立刻放入指定的数据值


基本数据类型

byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717
int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647
long:长整型,在内存中占64位,即8个字节-263~263-1
float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位)
double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节
char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false)


控制台的输入输出

1.Scanner类的导入
在使用Scanner获取用户输入的数据之前,需要导入Scanner类
import java.util.Scanner;//该代码必须放在package代码和类定义的代码中间
2.Scanner对象的创建
Scanner sc=new Scanner(System.in);
3.获取用户输入的数据
Int age=sc.nextInt();//获取用户输入的数字后赋值给变量age
4.控制台的输出
System.out.println();//使用print()或println()直接输出
5.Scanner常用的数据类型:
next():获取用户输入的字符串
nextInt():获取用户输入的整型数据
nextDouble():获取用户输入的Double类型数据
nextBoolean():获取用户输入的布尔类型数据
nextShort():获取用户输入的短整型数据
nextFloat():获取用户输入的Float类型数据
next().charAt(0):获取用户输入的字符串的第一个字符


Java运算符

1.算术运
(+)加法运算符求操作数的和 5+3=8
(-)减法运算符求操作数的差 5-3=2
()乘法运算符求操作数的乘积 53=1
(/)除法运算符求操作数的商 5/3=1
(%)取余运算符求操作数相除的余数 5%3=

2.复合运算符
+= 加法运算
-= 减法运算
*= 乘法运算
/= 除法运算
%= 模运算

3.关系运算符
大于 88>100结果为false
< 小于 88<1100结果为ture
= 大于等于 50>=60结果为false
<= 小于等于 50<=60结果为ture
== 等于 月球大小==地球大小结果为false
!= 不等于 月球大小!=地球大小结果为ture

4.逻辑运算符
&& 与运算即同时成立缺一不可 a>b&&c>d:只有左右两个表达式的值都为true结果才为true,只要有一个表达式为false则整个表达式为false
|| 或运算即两者之中有一个成立即可 a>b‖c>d左右两国表达式只要有一个成立就为true,只有两个都为false才为false
!非运算取反 !(a>b)如果表达式成立则为false反之

5.自增自减
(++)自增和(–)自减,他的作用是使变量值自增1或自减1
自增或自减运算符在前,会先运算自增自减
自增或自减运算符在后,会后运算自增自减
单独使用自增自减时,前缀后缀运算效果相同


数据类型转换

1.自动类型转换
程序运行时经常需要一种数值类型转换为另外一种数值类型
程序在运算过程中发生自动转换的一般条件为:
两种类型要兼容,数值类型互相兼容
计算过程中操作数向大操作数类型转换,计算结果也为表达式中大操作数的类型
2.强制类型转换
在Java中如果大数据类型转换为小数据类型时,在转换过程中会丢失数据的精度,想要实现这种类型转换,需要使用强制类型转换


if语句

一个if语句包含一个布尔表达式和一条或多条语句
if语句的语法格式如下

if(boolean_expression){
/*如果布尔表达式boolean_expression为真将执行的语句*/
}

如果布尔表达式boolean_expression为true,则if语句内的代码块将被执行
如果布尔表达式为false,则if语句结束后的第一组代码(闭括号后)将被执行


if…else语句

Java中,if语句后面可以跟else语句,当if语句的布尔表达式值为false时,else语句块会被执行
if…else的语法格式如下

if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}

if…else if语句

if语句后面可以跟else if…else语句,这种语句可以检测到多种可能的情况
但是使用if,else if,else语句的时候,需要注意下面几点
if语句至多有1个else语句,else语句在所有的else if语句之后
if语句可以有若干个else if语句,它们必须在else语句之前
一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行
if…else if语法格式如下

if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}else if(布尔表达式3){
//如果布尔表达式3的值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}

嵌套if语句

在Java语言中,嵌套if-else语句是合法的,这意味着您可以在一个if或else if语句内使用另一个if或else if语句
嵌套的if语句语法格式如下

if(boolean_expression 1){
/*当布尔表达式1为真时执行*/
if(boolean_expression 2)
{
/*当布尔表达式2为真时执行*/
}}

还可以像if语句一样嵌套else if…else


switch结构

switch语句又称为多路分支条件语句,用于处理多重条件的选择结构,使用switch语句可以简化程序的结构,特别是在处理等值判断问题时
switch语句的语法格式如下

switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
//你可以有任意数量的case语句
default://可选
//语句}

执行流程:
先计算switch后面小括号的值,然后将结果与每个case的常量相对比,当相等时则执行对应case语句块的代码处理,遇到break后跳出结构执行后续语句,如果没有case的常量与之相等,则执行default块中的语句


循环之while语句

只要给定的测试条件为真,Java语言中的while循环语句就会永远的重复执行它用大括号{}括起来的语句块
while是最基本的循环,它的语法一般如下

while(布尔表达式){
//循环体}

只要布尔表达式为true,循环体会一直执行下去


循环之do…while语句

Java中的while如果不满足条件,则不能进入循环,一次都并不会执行
但有时候我们需要即使不满足条件,也至少执行一次,do…while循环则解决了这个问题
do…while循环和while循环相似,不同的是,do…while循环至少会执行一次
do…while循环语法如下:

do{
//代码语句
}while(布尔表达式);

布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了
如果布尔表达式的值为true,则语句块一直执行,直到布尔表达式的值为false

for循环

在for循环中,循环初始部分循环条件和循环迭代部分都在for循环语句中
for循环语法结构如下:

for(表达式1;表达式2;表达式3){
循环体;}

在for循环中,for是关键字,其表达的含义如下:
表达式1为循环结构的初始化部分,主要用于为循环控制变量赋初值,通常为赋值表达式
表达式2为循环结构的条件部分,主要用于判断循环条件是否成立,条件的值为true时执行循环体,该表达式通常为逻辑表达式或关系表达式
表达式3通常为循环迭代部分,主要用于修改循环控制变量的值,通常用于对循环控制变量进行自增或自减操作


跳转语句

循环在执行的过程中通常只有在循环条件不成立的情况下才会跳出循环,但有时候会需要从程序的一个部分跳转到另外一个部分,可以使用跳转语句来实现,Java支持三种方式的跳转语句:break语句continue语句和reture语句,循环中常用break语句continue语句
break语句:
语法:break;
break语句作为中断处理语句,只能用在while语句,do-while语句,for语句以及switch语句中,用于中断当前结构的执行,通常和条件语句一起使用,当满足条件后,break语句使程序立即退出当前的语句结构,转而执行该结构之后的语句
continue语句:
语法:continue;
continue语句只能用于循环语句中,通常和条件语句一起使用,当满足一定的条件后终止本次循环跳到下一次循环


理解类和对象

对象:对象是类的一个实例,有状态和行为
类:类是一个模板,它描述一类对象的行为和状态
类是一个抽象的概念模型,而对象是具体的事物


Java中的类和对象

在Java中类是程序的基本单元,所有的程序都以类为组织单元,类中主要包括属性和方法
类的定义:

访问修饰符 class 类名{
//类的属性
//类的方法}

类的成员:
属性:属性用于表示类的特征,是类的一部分,在Java类的主体中定义变量,描述类所具有的属性,这些变量称为类的成员变量
方法:通过在类中定义方法,描述类所具有的行为,这些方法被称为类的成员方法,定义方法的语法如下:

访问修饰符 返回值类型 方法名 (参数){
//方法体}

返回值类型是方法执行完成后需要返回结果的类型,如果没有返回值则使用void表示,如果方法返回void,则在方法体中一定要返回和方法类型一样的值,返回结果的语法为return值;


对象的创建和使用

类的作用就是创建对象,由类生成对象称为类的实例化过程,一个类可以生成多个对象创建对象的语法如下:

类名 对象名=new 类名;

对象的使用语法如下:

对象名.属性//引用对象的属性
对象名.方法名()//引用对象的方法

构造方法

通过使用构造方法可以快速的为对象赋予需要的初识值,完成有效的对象初始化
构造方法和普通方法区别如下:
1.构造方法的名称必须和类名保持一致
2.构造方法不能有返回值类型
3.构造方法一般用public修饰
4.构造方法可以完成对类成员变量的初始赋值


方法

程序中可能重复出现相同或类似的代码,从中抽取相同的部分出来定义为方法,使该功能定义一次可以多次使用,从而有效的减少代码量,提高代码的重用率
自定义方法的定义通用格式:

访问修饰符 返回值类型 方法名(形式参数列表){
方法体;}

自定义方法调用的通用格式:

数据类型 变量名=方法名(实际参数列表);

无参数无返回值的方法

无参数无返回值方法的定义:

访问修饰符 void 方法名(){
方法体;}

无参数无返回值方法的调用:

对象.方法名();

有参数无返回值的方法

有参数无返回值方法的定义:

访问修饰符 void 方法名(形式参数列表){
方法体;}

有参数无返回值方法的调用:

方法名(实际参数列表);

成员变量和局部变量

成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化,成员变量可以被类中方法、构造方法和特定类的语句块访问
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁


有参数有返回值的方法

有参数有返回值方法的定义:

访问修饰符 返回值类型 方法名(形式参数列表){
方法体;
return 表达式;}

有参数有返回值方法的调用:

数据类型 变量名=方法名(实际参数列表);

数组的定义和使用

声明数组:

数据类型[] 数组名;
数据类型 数组名[];

创建数组:

数组名=new 数据类型[数组长度];

也可以一步完成声明与创建:

数据类型[] 数组名=new 数据类型[数组长度];

初始化数组:
创建数组会为数组分配内存空间,之后就可以在数组中存储数据,可通过数组的下标为数组进行初始化

语法一:

数据类型[] 数组名=new 数据类型[]{1,值2,……,值n};

语法二:

数据类型[] 数组名={1,值2,……,值n};

引用数组元素:

数组名.length

书籍系统

APP类:

ackage mybook;
import java.util.Scanner;
public class APP{
public static void main(String[]args){
System.out.println("******欢迎进入系统**********");
System.out.println("1.书籍信息录入");
System.out.println("2.书籍信息查询");
System.out.println("*************************");
System.out.println("请选择功能:");
//定义个变量接收用户输入的序号
Scanner scanner=new Scanner(System.in);
int choice=scanner.nextInt();
Book book=new Book();
while(choice==1||choice==2){
if(choice==1){
book.addBook();
}else{
book.showBook();
}
System.out.println("请选择功能:");
choice=scanner.nextInt();
}
ystem.out.println("输入的序号有误,已退出系统");
}
}

Book类:

package mybook;
import java.util.Scanner;
public class Book{
String name;
int kuCun;
Book allBook[]=new Book[5];
Scanner scanner=new Scanner(System.in);
public void addBook(){
for(int i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"本书籍名字:");
Book book=new Book();
book.name=scanner.next();
allBook[i]=book;
}
for(int i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"本书籍库存:");
allBook[i].kuCun=scanner.nextInt();
}
}
public void showBook(){
System.out.print("书名\t数量\t库存情况");
System.out.println();
for(int i=0;i<allBook.length;i++){
System.out.print(allBook[i].name+"\t");
System.out.print(allBook[i].kuCun+"\t");
String tem;
if(allBook[i].kuCun>100){
tem="充足";
}else if(allBook[i].kuCun>=50&&allBook[i].kuCun<=100){
tem="一般";
}else{
tem="不足";
}
System.out.print(tem+"\t");
System.out.println();
}
}
}

Book1类:

package mybook;
import java.util.Scanner;
public class Book1{
String name[]=new String[5];
int kuCun[]=new int[5];
Scanner scanner=new Scanner(System.in);
public void addBook(){
for(int i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"本书籍名字:");
name[i]=scanner.next();
}
for(int i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"本书籍库存:");
kuCun[i]=scanner.nextInt();
}
}
public void showBook(){
System.out.println("书名\t数量\t库存情况\t");
for(int i=0;i<5;i++){
System.out.print(name[i]+"\t");
System.out.print(kuCun[i]+"\t");
String tem;
if(kuCun[i]>100){
tem="充足";
}else if(kuCun[i]>=50&&kuCun[i]<=100){
tem="一般";
}else{
tem="不足";
}
System.out.println(tem+"\t");
}
}
}

Copyright © 2002-2019 某某自媒体运营 版权所有