当前位置: 首页 > article >正文

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);//11
        System.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= 1
                    break 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 ~ 99
 System.out.println(number);
 }
 }

练习题

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

太充实了!!!


http://www.kler.cn/news/306940.html

相关文章:

  • [Golang] Sync
  • HarmonyOS开发之全局状态管理
  • 天融信把桌面explorer.exe删了,导致开机之后无windows桌面,只能看到鼠标解决方法
  • C++基础面试题 | 什么是C++中的虚继承?
  • LabVIEW机动车动态制动性能校准系统
  • spring项目中如何通过redis的setnx实现互斥锁解决缓存缓存击穿问题
  • [项目][WebServer][HttpServer]详细讲解
  • 一码空传临时网盘PHP源码,支持提取码功能
  • 数据中台进化为数据飞轮的必要
  • 【笔记】自动驾驶预测与决策规划_Part2_基于模型的预测方法
  • 初学Linux(学习笔记)
  • Vue.js入门系列(二十九):深入理解编程式路由导航、路由组件缓存与路由守卫
  • 【C++】入门基础(下)
  • Java项目基于docker 部署配置
  • 关于新版本 tidb dashboard API 调用说明
  • 评价类——熵权法(Entropy Weight Method, EWM),完全客观评价
  • ansible安全优化篇
  • 在深圳停车场我居然能看到很漂亮的瓦房
  • 707. 设计链表
  • SQL,从每组中的 json 字段中提取唯一值
  • 鸿蒙开发基础
  • Rust Web开发框架对比:Warp与Actix-web
  • SpringBoot + MySQL + MyBatis 实操示例教学
  • 从冯唐的成事心法 看SAP协助企业战略落地到信息化
  • 车载软件架构 --- SOA设计与应用(上)
  • DAY20240913 VUE:深入解析 Vue Router 局部路由守卫:路由独享与组件内部守卫的妙用与区别
  • 自修C++PrimerPlus--类型转换、右值引用、引用中的类对象
  • 虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统
  • C++实现unordered_map和unordered_set
  • 【Kafka】分区与复制机制:解锁高性能与容错的密钥