面向对象前置(java)

文章目录

  • 环境配置相关
    • 如何在 cmd 任何路径下中 使用 javac(编译) 和 java(运行) 指令
    • path变量的含义
    • javac(编译)使用
    • java(运行)的使用
    • public class 和 class 的区别
  • 标识符
    • 命名规则
    • 命名规范
  • 字面量
  • 字符串拼接
  • 变量的作用域
  • 转移字符
  • 类型转换
  • 接收用户键盘输入
  • switch 注意事项
    • java12 新特性
    • 方法
  • 方法重载(静态多态)
  • 递归

前言

没有 while for 等语法,主要是自己认为得到一些需要注意的地方,方便复习

环境配置相关

官网下载的 jdk 中有如下东西
在这里插入图片描述

这里有两个重要文件夹
bin:里面存放的是 命令:javac java 等命令
lib:里面放的是类库,java源码也放在里面



如何在 cmd 任何路径下中 使用 javac(编译) 和 java(运行) 指令

第一步:编辑系统变量中的 path 变量
在这里插入图片描述


第二步:在系统变量中编辑,添加 bin 路径(就是你下载的 jdk 的 bin 文件夹路径)
在这里插入图片描述


path变量的含义

Dos 命令窗口输入 Dos 命令,会先从当前路径下找个命令,如果则回去环境变量 path 路径中查找该命令,找到就执行,找不到就报错,也就是说 path 是给 windows 操作系统指路的


javac(编译)使用

  • javac + java 源文件的相对路径
  • javac + java 源文件的绝对路径

绝对路径

从盘符开始的路径就是绝对路径
例如:
C:\Users\MangFu\Desktop\note\Java\code2\hello.java

相对路径

从当前路径下面找
例如

在这里插入图片描述
code2 文件夹里的 hello.java 是相对于 命令行路径下的,也就是命令行整个路径,里有一个 code2 文件夹 code2 文件夹里面有 hello.java 文件,这个路径是相对于命令行这个路径的


java(运行)的使用

javac 之后会产生一个 class 文件,然后我们用 java 命令运行这个 class 文件。要注意命令行的路径要在有 class 文件的路径,也就是说 你 class 文件在哪个路径,你就得在哪个路径下运行 class 文件

为什么

java 命令,执行后,先启动 JVM,JVM启动 类加载器,类加载器从当前路径下寻找 class 文件,找不到就报错

如何解决

在系统环境变量中,新建一个 classpath,然后设置一个路径,如果新建好了,就会从这个路径找 class 文件,当然配置后,只能从这个路径找 class 文件了。所以我们一般在路径前面多加一个 . 表示先从当前路径找,找不到才去 classpath路径找
在这里插入图片描述


public class 和 class 的区别

  • 一个 java 源文件可以定义多个 class ,编译后,一个 class 就对对应生成一个 class 字节码文件

  • 如果一个类是 public 的,类名必须和源文件名一致,public 类可以没有,如果有只能有一个

  • 每个类都可以编写 入口 main 方法,用 java 可以运行不用的 class 字节码文件



标识符

标识符就是给变量,方法,类,包等命名的字符序列


命名规则

  • 标识符可以由字母,数字,下划线(__),美元符号组成($),不能含有其他符号
  • 标识符不能以数字开头
  • 标识符不能是 Java 中的关键字,如 public class 等
  • 标识符区分大小写

命名规范

  • 见名知意
  • 驼峰式命名
  • 类名,接口名,枚举,注解:首字母大写,后面每个单词首字母大写(StudentService, UserSeriver)
  • 变量名和方法名:首字母小写,后面每个单词首字母大写(doSome, doOther)
  • 常量名:全部大写,每个单词用下划线链接(LOGIN_SUCCESS,)
  • 包名:全部小写


字面量

字面量指的是在程序中直接使用的数据,字面量是 Java 中最基本的表达式,不需要进行计算或转换,直接使用即可

例如

//整形字面量
10, -100//浮点型字面量
3.14159, 2.1//布尔型字面量
true false//字符型字面量
'a' 'b'//字符串型字面量
"ab", "a"



字符串拼接

+ 号两边只要有一边是字符串,一定会做字符串的拼接操作,并且拼接完之后的结果还是一个字符串

public class Main {public static void main(String[] args) {System.out.println(10 + "10");//1010//从前往后算:先 10 + 20 = 30 再和 30 拼接System.out.println(10 + 20 + "30");//3030//这里:10 和 20拼接返回字符串,继续和 30 拼接返回字符串System.out.println("10" + 20 + 30);//102030}
}



变量的作用域

简单来说就是出了{}就不认识了


局部变量:在方法体中定义的变量,一定是局部变量,只在当前方法体中有效
局部变量必须手动赋值

成员变量:在类体重定义的变量
成员变量系统会自动赋值

在这里插入图片描述




转移字符

\t :制表符,按下 tab
\n: 换行
\ ":表示双引号
\ ':表示单引号
\ \ :表示反斜杠 \

public class Main {public static void main(String[] args) {//输出 \System.out.println("\\");//输出 "System.out.println("\"");}
}



类型转换


(byte short) 和 char 不能互相转换

short a = 10;
char b = a; //报错

byte,short,char三者计算时首先转换为int

byte b1 = 1;
byte b2 = 1;
short s1  = 1;//int 存不进 short
short s2 = b1 + s1; //错 b2 + s1 -> intbyte b3 = b1 + b2; //错 b2 + b3 -> int short s1 =  s1 + 1; // 错 s1 + 1 -> int

多种类型数据混合运算,系统自动转换成两个的容量中最大的那种数据类型进行计算
在这里插入图片描述

//这里提升成了 long 装不进 a
int a = 1 + 1L 报错 //错 按照 1L的long 存 int 存不下

char short byte 可以保存int 的常量,但不能保存int 的变量

char a = 'a' + 1; //对
short b = 1 + 1; //对//错
int a = 10;char a = 10;

前后置递增会底层会强制转换

char a = 1;
a++; //可以过




接收用户键盘输入

在这里插入图片描述




switch 注意事项

switch (expression)

  • expression:表达式执行完是一个值,int ,枚举,字符串

  • 也可以把 byte char short 放进去进行自动类型转换

  • case 语句中必须是字面量,不能是变量

  • 值必须和 switch 后面的值同一个类型,或者能互相转换

java12 新特性

public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();switch (num) {case 1 -> System.out.println("你好");case 2 -> System.out.println("我不好");case 3 -> System.out.println("我不是很好");default -> System.out.println("fuck u");}}
}
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();switch (num) {case 1, 2, 3 -> System.out.println("你好");}}
}
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();switch (num) {case 1, 2, 3 -> {System.out.println("fuck u");System.out.println("丢雷");}}}
}



循环(break, continue)中的标记:类似 goto

break
标记名字随便起

public class Main {public static void main(String[] args) {for1:for (int i = 0; i < 2; i++) {for2:for (int j = 0; j <= 5; j++) {if (j == 5) {//这里符合条件就终止 for1 那个循环break for1;}System.out.println(j);}}}
}

continue

public class Main {public static void main(String[] args) {for1:for (int i = 0; i < 2; i++) {for2:for (int j = 0; j <= 5; j++) {if (j == 3) {//从 for1 开始继续continue for1;}System.out.println(j);}}}
}

区分 return 和 break:return 是终止整个方法,break 终止的是循环




方法

统一编写 public static
在 c 语言里面叫函数



返回值类型,一定要和返回值类型一样,或者能够自动类型转换,或者强制类型转换

public class Main {public static void main(String[] args) {long a = add(100, 200);System.out.println(a);}public static int add(int a, int b) {return a + b;}
}

方法原理

方法如果只定义,不调用是不会分配内存空间。(从 java8 开始,方法的字节码指令存储在元空间 metaspace 中,元空间使用的是本地内存

方法调用的瞬间,会在JVM栈内存当中分配活动场所,此时发生压栈动作


方法执行结束,就会释放空间,就弹栈

public class Main {public static void main(String[] args) {System.out.println("main begin");m1();}public static void m1() {m1();}public static void m2() {m3();}public static void m3() {}}

在这里插入图片描述




方法重载(静态多态)

在一个类中,如果两个方法的功能相似,建议将方法定义为同一个名字

  • 在同一个类中
  • 方法名一样
  • 形式参数列表不同(类型,顺序,个数)
    满足以上条件就构成重载
public class Main {public static void main(String[] args) {System.out.println("main begin");}public static void m1() {};public static void m1(String s) {};public static void m1(int a, int b){};
}



递归

压栈和弹栈
在这里插入图片描述

public class Main {public static void main(String[] args) {System.out.println(sum(5));} public static int sum(int n) {if (n == 1) {return 1;}return sum(n-1) + n;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公差基础-配合(互换性和测量基础)-2

过盈配合&#xff1a; 配合的种类&#xff1a; 三种&#xff1a;间隙&#xff0c;过渡&#xff0c;过盈配合&#xff1a; 间隙配合&#xff1a; 过盈配合&#xff1a; 过渡配合&#xff1a; 间隙量&#xff1a;最大间隙减去最小间隙&#xff1b; 配合的公差怎么算&#xff1a…

江协科技STM32学习- 2安装Keil5-MDK

本文是根据哔哩哔哩网站上“江协科技STM32”视频的学习笔记&#xff0c;在这里会记录下江协科技STM32开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技STM32教学视频和链接中的内容。 引用&#xff1a; STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩…

TypeScript入门教程

今天&#xff0c;给大家分享一个自己总结的超详细的TypeScript入门教程电子书。从TypeScript的基础知识开始讲解&#xff0c;包括数据类型、变量、运算符、条件语句、循环结构等基本概念。接着&#xff0c;详细介绍TypeScript中的函数、类和接口等高级特性&#xff0c;以及如何…

Oracle阅读Java帮助文档

进入到Help Center 选择Java 查看Java SE [version]对应版本相关的内容 查看其它版本 查看Java11 javac等相关参数 目录查看java相关命令

【Mac】Luminar Neo for mac(图像编辑软件)软件介绍及同类型软件比较

Luminar Neo软件介绍 Luminar Neo 是一款由 Skylum 开发的功能强大的照片编辑软件&#xff0c;专为摄影师和摄影爱好者设计。它适用于 Mac 和 Windows 平台&#xff0c;提供了一系列先进的编辑工具和功能&#xff0c;使用户能够轻松提升和优化他们的照片。以下是 Luminar Neo …

篮球杯小白+强者

2. 宣读数字【算法赛】 思维题&#xff0c;注意到完全平方数的约数是奇数个&#xff0c;其余都是偶数个。 #include <bits/stdc.h>using namespace std;#define LL long long#define pb push_back#define x first#define y second #define int long long #define endl \n…

在机器学习领域中,One-Hot Encoding是什么

一般来说&#xff0c;机器学习模型要求所有的输入输出变量都必须是数字。如果我们的数据中包含了分类数据&#xff0c;我们必须将它们编码成一些数字&#xff0c;这样我们才可以拿去训练和评测一个机器学习模型。 我们常说的分类数据是不能够直接拿来训练、预测的。因为它们一…

邮件钓鱼--有无SPF演示--Swaks

目录 临时邮箱网址: Swaks 简单使用说明&#xff1a;(kali自带) 操作流程: 无SPF:(直接伪造发信人) 演示1 演示2 演示3 ​编辑 有SPF:--演示 临时邮箱网址: http://24mail.chacuo.net/ https://www.linshi-email.com/ Swaks 简单使用说明&#xff1a;(kali自带) -t –t…

第5章:模型预测控制(MPC)的代码实现

1. 建立 QP 模型&#xff1a; 1.1 车辆模型&#xff1a; 注&#xff1a;使用车辆横向动力学模型 纵向动力学模型&#xff08;误差模型&#xff09; 1.2 QP 问题模型&#xff1a; 注&#xff1a;详细推导见 笔记100&#xff1a;使用 OSQP-Eigen 对 MPC 进行求解的方法与代码-…

怎样快速清理电脑里的所有软件 怎么删除干净电脑软件

苹果电脑内的软件来源主要有两个&#xff0c;一是系统预装&#xff0c;二是用户自行下载。但并不是所有应用程序都是高频使用状态&#xff0c;甚至好多是从未打开过的“屏幕装饰”。小编今日独家攻略&#xff0c;内存告急如何快速清理电脑里的所有软件&#xff0c;怎么删除干净…

33 _ 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?

通过上篇文章的介绍&#xff0c;我们知道了同源策略可以隔离各个站点之间的DOM交互、页面数据和网络通信&#xff0c;虽然严格的同源策略会带来更多的安全&#xff0c;但是也束缚了Web。这就需要在安全和自由之间找到一个平衡点&#xff0c;所以我们默认页面中可以引用任意第三…

⌈ 传知代码 ⌋ 2 行代码搞定火灾检测

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

注解(Annotation)(一)

Java 注解&#xff08; Annotation &#xff09;又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。 Java 语言中的类、 构造器、 方法、成员变量、参数等都可以被注解进行标注。 自定义注解 --- 格式 自定义注解就是自己做一个注解来使用。 public interface …

Spring 整合 MyBatis 底层源码解析

大家好&#xff0c;我是柳岸花开。今天我们要讲的是 Spring 整合 MyBatis 的底层源码解析。希望大家能更深入理解 Spring 和 MyBatis 的整合原理&#xff0c;并应用到实际项目中。 由很多框架都需要和Spring进行整合&#xff0c;而整合的核心思想就是把其他框架所产生的对象放到…

IDEA创建lib目录,导入jar

IDEA创建lib目录&#xff0c;导入jar lib第一种创建方法&#xff1a; 当发现项目没有lib目录时&#xff0c;File>>>Project Structure 打开Artifacts目录 lib第二种创建方法&#xff1a; 按需选择需要的jar包或者全选即可 lib第三种创建方法&#xff1a;

大疆Pocket2手持记录仪格式化恢复方法

大疆Pocket系列是手持类产品&#xff0c;此类产品处理过不少&#xff0c;今天来看一个Pocket2误格式化之后的恢复方法。 故障存储:256G存储卡 /文件系统&#xff1a;exFAT 故障现象: 客户描述其经常对存储进行格式化&#xff0c;一般重新拍就会格式化一次&#xff0c;需要恢…

一次基于 rebase 的 PR 提交

目录标题 基于 rebase 的 PR 提交git 命令idea 操作 基于 rebase 的 PR 提交 git 命令 &#xff11;・git fetch &#xff12;・git checkout -b dev2 origin/dev2 新拉分支dev2&#xff13;・date >> 1.txt && git add . && g…

深入浅出談 隐马尔可夫的概念(1/ 2)

文章目录 一、说明二、Markov Chain三、Introduction四、State Sequence五、Comment六、介绍隐藏式马可夫法则。七、隐藏马尔可夫Introduction八、结论 一、说明 在许多机器学习的章节中&#xff0c;常常遇见 HMM &#xff0c;往往看到它的数学式子后&#xff0c;就当没看到似…

springboot事务操作

事务操作 事务处理就是将一个方法中的全部操作当初一个整体&#xff0c;如果其中一个地方报出异常&#xff0c;我们就需要回滚回之前的操作&#xff0c;防止数据混乱&#xff0c;数据缺失 1、Transactional springboot为我们提供了Transactional注解&#xff0c;该注解可以用于…

2-5 基于matlab的信号的希尔伯特-黄变换

基于matlab的信号的希尔伯特-黄变换&#xff0c;IMF分解&#xff0c;对IMF进行Hilbert处理&#xff0c;绘制二维/三维时-频图&#xff0c;时间-能量图(瞬时能量谱) &#xff0c;频率-能量图&#xff08;希尔伯特谱&#xff09;。程序已调通&#xff0c;可直接运行。 2-5 希尔伯…