您的位置:首页 > 游戏 > 手游 > day01 - Java基础语法

day01 - Java基础语法

2024/9/21 22:01:05 来源:https://blog.csdn.net/weixin_51202460/article/details/142303349  浏览:    关键词:day01 - Java基础语法

第一章 Java概述

  1. 1995年美国Sun推出Java,2009年Sun公司被甲骨文收购

  2. Java之父:詹姆斯·高斯林(James Gosling)

  3. Java编译器将源程序编译成与平台无关的字节码文件(class文件),然后由JVM对字节码文件解释执行。不同操作系统,只需要安装不同的Java虚拟机就可实现Java程序的跨平台

  4. JRE(Java运行环境,用于运行JAVA程序),包含JVM和Java的核心类(Java API)

    JDK(Java开发工具包,用来开发JAVA程序),包含JRE和一些Java开发工具包;JDK有三个版本:JAVA SE(标准版,适用于普通应用程序的开发),JAVA EE(企业版,适用于大型企业级应用程序的开发), JAVA ME(微型版,适用于移动设备或嵌套式设备的程序开发)

5. JDK的安装目录介绍

目录名称说明
bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录(可执行文件)
conf该路径下存放了JDK的相关配置文件
include该路径下存放了一些平台特定的头文件
jmods该路径下存放了JDK的各种模块
legal该路径下存放了JDK各模块的授权文档
lib该路径下存放了JDK工具的一些补充JAR包(java的类库文件)
jre存放java运行环境文件

6. 基础DOS命令

操作说明
盘符名称:盘符切换,如:E:回车,表示切换到E盘。
dir查看当前路径下的内容
cd 目录进入单级目录。cd itheima
cd …回退到上一级目录
cd 目录1\目录2…进入多级目录。cd itheima\JavaSE
cd \回退到盘符目录。
cls清屏
exit退出命令提示符窗口

第二章 你好,世界

1. 为什么配置环境变量

开发Java程序,需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK的bin目录下,所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。

2. 创建环境变量步骤

新建系统变量JAVA_HOME:C:\Program Files\Java\jdk1.8.0
新建系统变量Path的值:%JAVA_HOME%\lib (注意:点号表示当前目录,不能省略)

3. Java程序开发运行流程

JAVA源程序  ===编译===>  Java 字节码文件  ===执行===>  Java虚拟机(JVM)  ======>  各系统(Windows,Linux等)

4. HelloWorld的编写

4.1 记事本打开新建HelloWorld.java文件,内容如下:
 public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}}
4.2 找到文件所在的文件夹,在地址栏中输入cmd ,编译执行
javac HelloWorld.java
//运行成功,会生成字节码文件HelloWorld.class
java HelloWorld

如图:
在这里插入图片描述

5. HelloWorld案例常见问题

  1. 非法字符问题。Java中的符号都是英文格式的
  2. 大小写问题。Java语言对大小写敏感(区分大小写)
  3. 在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件
  4. 编译命令后的java文件名需要带文件后缀.java
  5. 运行命令后的class文件名(类名)不带文件后缀.class

第三章 Java基础语法

1. 注释

1.1 单行注释

单行注释的格式是使用//,从//开始至本行结尾的文字将作为注释文字

// 单行注释
1.2 多行注释

多行注释的格式是使用/* 和 */将一段较长的注释包裹起来

/*
多行注释
多行注释
多行注释
*/
1.3 文档注释

文档注释以/** 开始,以**/结束

/**这是文档注释文字**/

2. Java中标识符的组成规则

只能由字母、数字、下划线“_”、美元符号“$”组成,标识符只能是以大小写字母、下划线、$ 作为开头
不能使用java中的关键字作为标识符。
标识符对大小写敏感(区分大小写)

3. 标识符与关键字的命名约定

包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式
类名:每个单词首字母大写;如DOMarcoPolo
变量名:除首单词外的所有单词首字母大写,如:localValue
常量:常量命名全部大写,单词间用下划线隔开,如:MAX_STOCK_COUNT
关键字:字母全部小写

Java关键字

  1. 常量在程序运行过程中,其值不可以发生改变的量
  2. 标量在程序运行过程中,其值可以发生改变的量
数据类型 变量名 = 初始值;//声明变量并赋值
int age = 18;
数据类型 变量名; 
变量名 = 初始值;  //声明变量并赋值
int age;
age=18;
  1. 可以在一行中定义多个同一类型的变量,但不建议这样使用
int a =10,b=20;

7. 变量使用注意事项

1. 在同一对花括号中,变量名不能重复
2. 变量在使用之前,必须初始化(赋值)
3. 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围
4. 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容

8. Java中的基本数据类型

关键字内存占用取值范围
byte1字节-128~127
short2字节-32768~32767
int4字节-(2的31次方)~2的31次方-1
long8字节-(2的63次方)~2的63次方-1
float4字节1.401298e-45 ~ 3.402823e+38
double8字节4.9000000e-324 ~ 1.797693e+308
char2字节0-65535
boolean1字节true,false

注:

1. e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方
2. 在java中整数默认是int类型,浮点数默认是double类型
3. 字符串类型String不属于java的基本数据类型,是引用数据类型
4. 引用数据类型:在Java中,引用数据类型指向一个对象,该对象的类型就是引用数据类型,对象、数组都是引用数据类型,简单理解类就是引用数据类型

9. 类型转换

数据范围小的数值或变量赋值给数据范围大的变量。这种转换是自动的(自动转换

double a = 1;
System.out.println(a);

数据范围大的数值或变量赋值给数据范围小的变量。这种转换需要强制转换格式(强制转换
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量

double a = (double)1;
System.out.println(a);

注:

1. char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a'对应97
2. 整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型
3. boolean类型不能与其他基本数据类型相互转换

第四章 Java运算符

1. 算术运算符

通常的简单的数值计算
算术运算符

 public static void main(String[] args) {int a = 10;System.out.println(a+++1);//11System.out.println(++a+1);//13}

2. 关系运算符

用于大小等关系比较的运算符为关系运算符,一般比较的结果为布尔类型
关系运算符

3. 赋值运算符

运算结果赋值给一个新的变量
赋值运算符

4. 逻辑运算符

把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否
成立
逻辑运算符

5. 短路逻辑运算符

在这里插入图片描述

6. 三元运算符

格式:关系表达式 ? 表达式1 : 表达式2

public static void main(String[] args) {int a = 10;System.out.println(a==1?11:22);//22}

第五章 Java条件语句

1. if条件判断语句

if语句用于条件判断,所以括号内为判定条件,结果应为布尔类型

public static void main(String[] args) {int a = 10;if(a == 10){System.out.println(a);//10}}

2. if…else语句

if…else 语句用于条件判断,当if判定为false的时候,会执行else中的内容

public static void main(String[] args) {int a = 11;if(a == 10){System.out.println(a);}else {System.out.println("a:"+a);//a:11}}

3. if…else if…多条件判断语句

符合if中的条件就执行if大括号中的代码,否则是否满足else if中的条件,是就执行大括号中的代码,否则就执行else中的条件,由于过多的使用if else if会影响代码的阅读等,所以不建议使用超过4层

    public static void main(String[] args) {int a = 1;if(a == 20){System.out.println(a);}else if(a == 15){System.out.println("a:"+a);} else if (a == 10) {System.out.println("a1: "+a);} else if (a == 5) {System.out.println("a2: "+a);}else {System.out.println("a3: "+a);//a3: 1}}

4. switch case语句

switch case 语句判断一个变量与一系列值中某个值是否相等,而每个值称为一个分支

public static void main(String[] args) {int a = 1;switch (a) {case 5:System.out.println("要放假了!!");break;case 6:System.out.println("放假第一天!!");break;case 7:System.out.println("放假最后一天!!");break;default:System.out.println("上班中!!");//上班中!!break;}}
  • switch语句中的变量类型可以是:byte、short、int或者char,在Java SE7开始,支持字符串 String类型
  • case语句中值的数据类型必须与变量的数据类型相同,而且只能是常量或字面量
  • 当变量值与case语句的值相等时,那么就从该case语句开始执行,直到遇见break语句才会跳出
  • switch可以包含一个default分支,一般是最后一个分支(可以存在于任何位置),在没有匹配的case语句的时候,会默认执行default分支

第六章 Java循环语句

1. while循环语句

当循环判定为true时,执行循环体,否则跳出(结束)循环
语法结构

while(布尔表达式){//循环内容
}
public static void main(String[] args) {int a = 10;while (a< 20){System.out.println(a);a++;}}

结果:打印10~19

2. do…while循环语句

do … while循环和while循环类似;不同的地方是do…while循环会先执行一次在判定;而while会先判定在执行,所以do…while循环至少会执行一次,而while循环可能一次也不会执行
语法结构

do{//代码语句
}while(布尔表达式);
 public static void main(String[] args){int x = 10;do{System.out.print("value of x : " + x );x++;System.out.print("\n");}while( x < 20 );}

3. for循环语句

语法结构

for(初始化值;布尔表达式;值更新){//循环体代码
}
public static void main(String[] args) {for (int i=1;i<=100;i++){System.out.println(i);}}

结果:打印1~100

4. 增强型for循环语句

语法结构

for(声明语句:表达式){//代码句子
}
    public static void main(String[] args) {int[] nums = {1,2,3,4,5,6,7,8,9};for (int i:nums){System.out.println(i);}}

结果:打印1~9

第七章 跳转控制语句

1. break关键字

break关键字主要用在循环语句或者 switch 语句中,用来跳出整个语句块
break 跳出最里层的循环,并且继续执行该循环结束后的语句

    public static void main(String[] args) {int[] nums = {1,2,3,4,5,6,7,8,9};for (int i:nums){System.out.println(i);if(i == 5){break;}}}

结果:打印1~5
如何跳出多重嵌套循环?

    public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};flag:for (int i : nums) {for (int j = 1; j < 9; j++) {if (j == i) {System.out.println("i= " + i + "j= " + j);//i= 1j= 1break flag;}}}}

2. continue关键字

continue 适用于任何循环控制结构中。作用是跳过本次循环,继续下一次循环

    public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};for (int i : nums) {if(i%3==0){continue;}System.out.print(i+" ");//1 2 4 5 7 8 }}

第八章 常用类

Scanner

一个可以解析基本类型和字符串的简单文本扫描器。
例如,以下代码使用户能够从 System.in 中读取一个数:

Scanner sc = new Scanner(System.in);int i = sc.nextInt();

备注:System.in系统输入指的是通过键盘录入数据。

使用步骤:

//导包
import java.util.Scanner;//导包的动作必须出现在类定义的上边
//创建对象
Scanner sc = new Scanner(System.in);

代码示例:

//1. 导包
import java.util.Scanner;public class Demo01_Scanner {public static void main(String[] args) {//2. 创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);//3. 接收数据
System.out.println("请输入一个整数:");int i = sc.nextInt();//4. 输出数据
System.out.println("i:"+i);}}

Random

Random跟Scanner一样,也是Java提前写好的类,我们不需要关心是如何实现的,只要直接使用就可以了。

使用步骤:

//导包
import java.util.Random;//导包的动作必须出现在类定义的上边。
//创建对象
Random r = new Random ();//上面这个格式里面,只有r是变量名,可以变,其他的都不允许变
//生成随机数
int number = r.nextInt(随机数的范围);

上面这个格式里面,只有number是变量名,可以变,其他的都不允许变。
随机数范围的特点:从0开始,不包含指定值。比如:参数为10,生成的范围[0,10)

代码示例:

//1.导包
import java.util.Random;public class RandomDemo1 {public static void main(String[] args) {//2.创建对象
Random r = new Random();//3.生成随机数
int number = r.nextInt(100);//包左不包右,包头不包尾
//0 ~ 99System.out.println(number);}}

练习题

一、完成一个猜数字大小游戏
设计思路:
1. 程序中自动生成一个1100之间的随机整数A
2. 玩家循环在控制台中输入1100之间的任意数B,然后程序会显示以下内容
如果输入数字B 小于 整数A 则控制台中显示【你猜的数字太小了】进行提示
如果输入数字B 大于 整数A 则控制台中显示【你猜的数字太大了】进行提示
如果输入数字B 等于 整数A 则控制台中显示【恭喜你猜对了】进行提示
二、使用循环语句打印出1~100的奇数和与偶数和

太充实了!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com