java入门笔记

article/2025/9/23 15:09:43

1. Java相关概念

编程:用倾向于自然语言的方式编写指令代码的过程
编译:将自然语言指令代码转化为机器语言(二进制)的过程

在这里插入图片描述

系统差异化:为了用不同类型的芯片实现相同的功能,就需要用不同的指令代码操作不同的计算机硬件设备
解决方法:Java 可以通过软件模拟虚拟机器(JVM),用一套代码操作相同的虚拟机器上,从而屏蔽不同计算机设备的差异,简化指令代码的编写
字节码:JVM 接收的指定代码

在这里插入图片描述

JDKJava Development KitJava 开发工具包,封装经常使用的指令代码和编译器
JREJava Runtime EnvironmentJava 运行环境,可以直接使用编译好的字节码
src:.java 源码文件存放目录
out:.class 编译后的类文件(字节码)存放目录
jdk/bin/java.exe:启动 JVM,读取字节码文件(翻译成机器指令)

2. 第一个Java代码-Hello World

2.1 Hello World代码

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

执行上面这段代码,就会输出结果
在这里插入图片描述

2.2 流程梳理

在这里插入图片描述

在这里插入图片描述
JVM 把机器指令传给操作系统(OS),OS 通过 CPU 读取指令,执行时可能会分配内存、存储磁盘数据,最后反馈结果,将数据打印显示在控制台(CONSOLE)上。

2.2 添加注释

在 Java 中,注释的方式主要有两种:

1)单行注释:// xxxxx2)多行注释:/* xxx 
xxx
*/

2.3 内存分配

数据存储:只存储数据
向量存储:存储数据类型、大小、位置(指向)
变量:可以改变的向量存储
创建变量:在内存空间中创建向量存储

3. 基本语法

3.1 变量

本质是可以改变的向量存储

声明:数据类型 + 变量名称
赋值:变量名称 = 数据
使用:直接访问变量名称即可
初始化:使用变量之前,必须给变量赋值
package chapter02;public class Java01_Variable {public static void main(String[] args) {/*变量是可以改变的向量存储1.申明变量:数据类型 + 变量名称2.赋值变量:变量名称 = 数据3.使用变量*/String name;name = "zhangsan";System.out.println(name);String username = "lisi";System.out.println(username);}
}

3.2 命名规则

英文拉丁字母(汉语拼音)
符号 @ # % $,但 标识符只能用下划线和 $ 符号,其他符号不能使用,包括空格也属于特殊符号,不能作为标识符使用
数字(0-9),可以使用,但不能用作命名开头
区分大小写,在大括号{}范围内命名不允许重复
关键字(保留字):Java 中预先定义好了一些标识符名称,不允许重复定义
驼峰命名法(规范命名):多个单词拼接,第一个单词首字母小写,其他单词首字母大写
标识符长度无限制
中文亦可命名,但容易出现乱码

关键字如图
在这里插入图片描述

3.3 数据存储单位和数据类型

数据存储单位:
比特(bit位):数据运算的最小存储单位
字节(byte):计算机数据的最小存储单位
转换:1 byte = 8 bit
其他单位:1GB = 1024MB = ……
Java 的数据类型可以确定数据范围

在这里插入图片描述

3.3.1 基本数据类型

整数类型:
byte  8short  16int  32long  64位
浮点类型:
float:单精度浮点数
double:双精度浮点数
默认情况下,小数点数据会被识别为精度更高的双精度 double 类型
如果想要设置单精度,数据需要使用 F / f 结尾
字符类型:
char
用符号(单引号)表示文字内容
布尔类型:
boolean
true or false

3.3.2 数据类型转换

1. 注意数据类型不同数据类型不能赋值转换
2. 注意数值范围(从小到大)byte -- short -- int -- long -- float -- double
3. 范围大的数据无法直接转换为范围小的数据,但可以使用小括号间接强制转换

在这里插入图片描述

3.3.3 引用数据类型

可以被引用的数据类型(存储时箭头的指向,变量指向引用数据类型)
变量如果是基本数据类型,在存储时不会有相应箭头(只有向量存储)
包括 string、类、数组、接口、枚举、null

3.4 运算符相关概念

3.4.1 运算符

参与数据运算的符号
和字符不同,无法自行定义
表达式:运算符 + 数据,符合Java语法规则的指令代码
运算符分类:

在这里插入图片描述

3.4.2 算术运算符

二元运算符:两个元素参与运算
3 * 2
1 / 2  //0
1.0 / 2  //0.5
5 % 2  //1
表达式的结果类型是元素种类类型最大的那一种,最小使用的类型为 int(可以强转)一元运算符:一个元素参与运算
++, --  自增/自减运算符
++i, i+++1/+1赋值运算符:
=
将右边的表达式结果赋值给左边的变量
元素运算后重新赋值给自己,复合赋值,如:+=
如果使用 复合赋值运算符,数据的类型不会发生变化,如:byte b1 += 20关系运算符:
比较两个数据之间的关系
==, !=, >= 等
结果为布尔类型逻辑运算符:
描述多个条件表达式之间关系的运算符
变量 = 条件表达式1 逻辑运算符 条件表达式2
结果为布尔类型
& 与,两个条件表达式都要计算出结果,全truetrue,其他false
| 或,两个条件表达式都要计算出结果,有truetrue,没truefalse
&& 短路与,根据第一个表达式的结果决定是否执行第二个条件表达式,如果第一个就能判断出结果(false),则不会执行第二个
|| 短路或,如果第一个就能判断出结果(true),则不会执行第二个
! 非,相反运算三元运算符:
三个元素参与运算
变量 = 条件表达式 ? 任意表达式1 : 任意表达式2
判断,如果条件表达式结果为true,执行任意表达式1false则执行任意表达式2

3.5 流程控制

3.5.1 流程控制基本概念

流程控制:计算机在执行代码时对指令代码执行顺序的控制
Java 流程控制主要分三种:
顺序执行
分支执行
重复执行
顺序执行
按代码和语法出现的先后顺序执行
分支执行
根据判断条件执行分支逻辑
可选分支、必选分支(多选一)、多分支、特殊分支(switch)
重复执行
根据条件循环执行
whiledo ... whilefor
breakcontinue

3.5.2 分支执行

可选分支(单分支,if true or false)
必选分支(双分支,if / else)
多分支(多重判断,if / else if / {else})
特殊分支(等值判断,switch caseswitch:
会对数据进行判断,如果等于某一个分支数据的值,会执行该分支的逻辑代码,并顺序执行后面的分支
如果一个分支都无法匹配,那么一个分支都不会执行,此时如果还想执行分支,可以增加 default 关键字(必选)
如果执行某个分支后,不想再执行其他分支,可以使用 break 关键字跳出当前分支
package chapter03;public class Java01_FlowControl {public static void main(String[] args) {System.out.println("第一步");System.out.println("第二步");//判断条件表达式
//        int i = 10;
//        if (i == 10) {
//            System.out.println("分支");
//        }// 双分支结构
//        int i = 10;
//        if (i == 10) {
//            System.out.println("分支1");
//        } else {
//            System.out.println("分支2");
//        }
//        System.out.println("第三步");//多分支int i = 30;if (i == 10) {System.out.println("分支1");} else if (i == 20) {System.out.println("分支2");}else {System.out.println("分支3");}System.out.println("第三步");}
}
package chapter03;public class Java02_FlowControlSpecial {public static void main(String[] args) {System.out.println("第一步");System.out.println("第二步");//特殊分支结构int i = 30;switch (i) {case 10:System.out.println("分支1");case 20:System.out.println("分支2");case 30:System.out.println("分支3");case 40:System.out.println("分支4");}System.out.println("第三步");}
}

3.5.3 重复执行

while:有条件循环
while (条件表达式) {}
先判断条件,{} 执行完毕后,重新判断条件
小心死循环
do {} while:
先执行 do{},再判断条件
至少执行一次
for ( a; b; c)
初始化表达式(用于条件表达式中的变量初始化)
条件表达式(决定是否执行循环)
更新表达式(控制循环次数)
break 跳出当前层循环,不再执行后续操作
continue 跳过当前层的这次循环,继续执行下次循环
package chapter03;public class Java03_Circle {public static void main(String[] args) {System.out.println("第一步");//1. while 有条件循环
//        int age = 30;
//        while ( age < 40 ){
//            System.out.println("循环代码");
//
//            age++;
//        }//2. do while
//        int age =30;
//        do {
//            System.out.println("循环代码");
//        } while (age < 40);//3. for循环int age =30;for (int i=30;i<40;i++){System.out.println("循环代码");}System.out.println("第二步");}
}

4. 面向对象

面向对象:是一种编程思想,一种分析事物和解决问题的方式,我们通过编程语言的语法来体现这种思想

4.1 面向对象基本概念

类和对象:
类表示归纳和整理
对象表示具体事物
类:
class 类名 { 
特征(属性)
功能(方法)
}
步骤:(比如做一道红烧排骨)
先声明类(菜)
创建对象(红烧排骨)
声明属性,属性就是类中变量
声明方法(烹饪过程,void 方法名() {})
执行方法(对象.属性,对象.方法名())
注意:
在对同一个对象的不同属性进行操作的时候,需要用变量来引用这个对象
Cooking c = new Cooking()
创建对象,用对象类型的变量来引用它,当处理变量时,处理的其实是引用的对象
基本数据类型不是对象,因此不是引用数据类型
用“+”拼接字符串
如果需要新菜,用new再次创建即可
package chapter04;public class Java01_Object {public static void main(String[] args) {Cooking c = new Cooking();c.name="红烧排骨";c.food="排骨";c.execute();//TODO 面向对象Cooking c1 = new Cooking();c1.name = "红烧鱼";c1.food = "鲫鱼";c1.execute();}
}class Cooking{//特征 属性//名字String name;//类型String type = "红烧";//食材String food;//佐料String relish="大料";//执行void execute() {System.out.println("准备食材:"+food);System.out.println("准备佐料:"+relish);System.out.println("开始烹饪");System.out.println(name+"烹饪完成");}}
内存分为三个部分:栈、堆、元空间栈 存储方法、变量 User user堆 存储对象 new User()元空间 存储类的信息对象是将内存地址赋值给变量,所以变量其实引用了内存中的对象,所以称之为引用对象,而该变量类型称为引用数据类型(new)
空对象(null)是特殊的对象,没有引用的对象(没有在堆中创建,箭头不存在),也称为关键字对象
所有引用类型变量的默认取值就是 null

在这里插入图片描述

4.2 属性

类的对象的相同特征语法类似变量的声明,属性类型 名称 = 值如果在声明属性时进行了初始化赋值,所有对象的属性就完全相同因此不用在声明属性时初始化,属性会在构造对象的时候默认初始化默认初始化值取决于属性类型(00.0false,空字符,null)变量 是方法的一部分,作用域小,只有在当前大括号内有效属性 是对象的一部分,不仅在当前类中有效,可以随对象在其他地方使用变量使用前必须初始化,否则会报错;但属性可以不用初始化,JVM 会自动完成初始化

4.3 方法

声明和调用方式名词:类、属性动词:方法(注意调用顺序,比如先注册后登录)void 表示方法的结果为空返回值类型 + 方法(),使用 return + 返回值 返回结果

4.4 方法参数

使用外部数据控制方法内部实现的操作(参数语法)内部:方法名(参数类型 参数名称)外部:传递参数当方法传递多个参数时,参数个数、类型、顺序都要匹配当参数个数不确定,但类型相同时,可以采用 可变参数 语法声明格式:参数类型... 参数名称(String... name)如果方法头还包含其他类型参数,可变参数应声明在最后

4.5 参数传值

方法执行在栈内存中完成,在栈帧中存放参数、变量、执行逻辑保持CPU箭头不变,调用新方法压栈、执行完方法弹栈引用对象及属性存于堆中,调用新方法压栈时,传递箭头(同一个引用地址),但如果进行 字符串拼接 等操作,会创建一个新的字符串(指向新的引用地址)(传递 对象 修改属性不会),如果执行方法内的 s = s + 10,则 新s 和 原s 指向的不是同一个引用地址,因此,执行完毕后,会弹出方法内的 新s 和引用地址,打印出的还是 原sJava 中方法参数的传递为 值传递基本数据类型传数值,引用数据类型传引用地址

在这里插入图片描述

4.6 静态

	针对于具体对象的属性称为对象属性,成员属性,实例属性针对于具体对象的方法称为对象方法,成员方法,实例方法static:和对象无关,只和类相关(可以通过 类名. 直接访问)先有类,再有对象有成员方法的时候,静态方法(类)一定存在,因此 可在成员方法内部调用静态方法/属性,但静态方法不能访问成员方法/属性

4.7 静态代码块

	static { xxx }类的信息加载完成后,会自动调用静态代码块,可以完成静态属性的初始化(按照声明静态代码块顺序依次执行)对象准备创建时(对象创建前),也会自动调用代码块 {xxx},但不是静态的

http://chatgpt.dhexx.cn/article/tICICJiu.shtml

相关文章

一、Java基础入门

一、java简介 1.1 前言 Java语言是美国Sun公司(stanford University Network),在1995年推出的高级编程语言。所谓编程语言是计算机的语言&#xff0c;人们可以使用编程语言对计算机下达命令&#xff0c;让计算机完成人们需要的功能。 1996年1月&#xff0c;Sun公司发布了Java的…

Java基础及入门

一、软件开发基础 1.什么是JavaEE JavaEE是一门接收来自客户端的请求&#xff0c;并通过响应返回给客户端数据的技术。 2.JavaEE理解图 2.常用的开发语言 二、Java开发环境搭建 1.什么是JDK及JRE 安装JRE的目的是什么&#xff1f;&#xff08;是为了编译代码&#xff09; JDK&…

java入门的基础(入门必读)

Java入门基础 什么是java程序开发Java的运行环境开发Java程序的步骤java的基本框架数据类型、变量数据类型变量变量名命名规则 运算符关系运算符逻辑运算符算术运算符 扫描仪的使用if选择结构多重if选择结构嵌套if选择结构 switch选择结构循环结构while循环结构do-while循环结构…

JAVA基础学习入门

JAVA入门之基本语法&#xff08;一&#xff09; 最近开始复习JAVA语言为找工作做准备&#xff0c;方便以后再次复习或者用到的时候回顾。先是从JAVA的基本语法学起&#xff0c;因为有c和c语言的基础知识铺垫&#xff0c;所以这部分的笔记会比较粗略&#xff0c;毕竟语言都是贯…

Java基础入门(六)

Java基础入门&#xff08;六&#xff09; 1 Debug调试1.1 Debug概述1.2 Debug操作流程1.2.1 设置断点1.2.2 运行加了断点的程序1.2.3 Debugger窗口和Console窗口1.2.4 分步执行1.2.5 取消断点1.2.6 结束Debug1.2.7 注意事项 2.基础中常用的类2.1 Random随机数2.2 Scanner获取用…

Java基础之入门(一)

文章目录 Java帝国的诞生1. Java初生2. Java的发展3. Java特性和优势4. JVM、JRE、JDK5. Java程序的运行机制6.注释7. 标识符和关键字7.1 关键字7.2 标识符 8. 数据类型8.1 基本数据类型8.1.1 字符案例8.1.2 整型案例8.1.3 浮点型案例 8.2 引用数据类型 9. 类型转换9.1 转换方式…

java入门基础

语法基础 变量和常量 字符串 tring 类型是引用类型 字符串拼接可以直接用加号连接 自动类型转换 向上类型转换&#xff0c;是小类型到大类型的转换。 和C语音一样 int类型可以自动转换为double 但是double需要强制转换才能转换为int 强制类型转换 向下类型转换&…

JAVA基础入门学习

书籍推荐和视频推荐 Java核心卷I java核心卷II可以买也可以不买。java核心卷I只看前9章&#xff0c;其他不用看。身边同学都认为这本书不适合初学者&#xff0c;但是如果你之前看过java学习视频&#xff0c;那么这本书很适合你。这本书主要让你对java知识有个系统的学习&…

JAVA入门及基础

随着技术的不断发展&#xff0c;编程语言的种类也在越来越多&#xff0c;由全国知名TIOBE编程语言社区发布的编程语言排行榜来看&#xff0c;我们的JAVA在近两年来仍然占据榜二榜三&#xff0c;那么能一直稳居前排必然是有他的原因的&#xff1a;我们的JAVA具有使用广泛&#x…

《Java基础入门》第三版--黑马程序员课后习题(编程部分)

第 1 章 Java 开发入门 第 2 章 Java 编程基础 1. 编写程序,计算13…99的值,要求如下&#xff1a; (1)使用循环语句实现1~99的遍历 (2)在遍历过程中,通过条件判断当前的数是否为奇数,如果是就累加,否则不加。 public class getSum { 2 public static void main(String[] ar…

《Java基础入门》笔记——01 Java初步

1 关于Java 1.1 Java的发展简史 Java之父——Gosling(高司令)98年&#xff0c;Java2企业平台J2EE发布99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)04年&#xff0c;发布JavaSE5.009年&#xff0c;Oracle收购Sun14年&#xff0c;发布JavaSE8 1.2 Java语言的特点 简单。…

java基础入门(完整详细版)

前言&#xff1a; 这篇教程对没学过java的完全适用这篇教程是一个学习方向的引导&#xff0c;且只针对基础入门。 一.入门篇 1.安装JDK的运行环境 1.1 下载JDK 直接官网下载&#xff1a;http://www.oracle.com/&#xff1b;链接&#xff1a;网盘安装JDK点击就可以下载(推荐…

Linux udev规则编写

编写本文的目的: 看完本章,朋友们可以进行随心所欲的运用udev,编写udev规则,更好的管理Linux设备。例如,把硬盘sda根据盘的SN码生成一个软连接,使得SN码当做sda一样使用。 在文章结束后,既可以有方案可以实现。 udev是什么? udev 是 Linux2.6 内核里的一个功能,它替代…

udev的rules编写

1.综述 本文简单介绍udev机制&#xff0c;并编写udev规则&#xff0c;实现手机即U盘自动挂载 2.udev介绍 udev 是 Linux2.6 内核里的一个功能&#xff0c;它替代了原来的 devfs&#xff0c;成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行&#xff0c;通过帧听内…

[Linux 基础] -- udev 和 rules 使用规则

前言&#xff1a; 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件&#xff0c;然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅&#xff0c;这些用…

linux udev

了解udev (Linux dynamic device management) 1.概述 Udev is the device manager for the Linux kernel. Udev dynamically creates or removes device node files at boot time in the /dev directory for all types of devices. udev is a replacement for the Device File…

udev(六):udev

原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 作者&#xff1a;清林&#xff0c;博客名&#xff1a; 飞 空静渡 <!-- page { margin: 2cm } P { margin-bottom: 0.21cm } --> 基于上面提到的问题&#xff0c;便开始了 udev 的项目。 …

udev(八):实战:使用udevadm修改usb优盘在/dev下的名字

原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 作者&#xff1a;清林&#xff0c;博客名&#xff1a; 飞 空静渡 udev的规则的编写&#xff0c;我这里就不说了&#xff0c;大家可以在udev的文档中可以了解&#xff0c;有时间的话我在安排一…

Linux下udev规则详解

如何运用udev&#xff1f;编写udev规则&#xff1f;通过udev更好的管理Linux设备? udev是什么&#xff1f; udev 是 Linux2.6 内核里的一个功能&#xff0c;它替代了原来的 devfs&#xff0c;成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行&#xff0c;通过侦…

Udev设备管理器

udev 引入 在2.4内核中 引入了 devfs&#xff0c;他支持设备节点的动态创建。devfs提供了在内存中的文件系统中创建设备节点的能力。设备驱动程序能够自主的管理自己的设备文件。而命名节点的任务还是落到了设备驱动程序头上。但是&#xff0c;设备命名策略是可管理的&#xf…