• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dzw9
博客园    首页    新随笔    联系   管理    订阅  订阅
Java

1.CMD

windows不区分大小写
符号必须是英文

打开CMD WIN+R:CMD回车
切换到E盘 E:回车
查看当前路径下内容 dir
进入目录 cd 目录
上一级目录 ..
清屏 cls
回到盘符根目录 cd \
qq.exe 设置环境变量path添加qq路径

jdk(java development kit)java开发工具包
bin路径下存放工具命令 javac和java
conf存放配置文件、include平台特定头文件、jmods模块、legal授权文档、lib工具补充JAR包

配置path环境变量

  • 第一个HelloWorld程序
    notepad++写代码
    首选项设置中编码为ANSI,默认语言JAVA
    javac -encoding gbk project.java
    java project
public class HelloWord {
	public static void main(String[] args) {
		System.out.println("HelloWorld");
	}
}

在cmd编译运行:
javac HelloWorld.java
java HelloWorld

2. 基础语法

2.1 注释

/**
	*文档注释
	*/
public class HelloWord {
	//main方法,表示程序主入口
	public static void main(String[] args) {
		/*输出语句
		会输出小括号内容*/
		System.out.println("HelloWorld");
	}
}

2.1 关键字

字母全部小写,class创建一个类,类是java最基本的组成单元

2.2 字面量

字面量 说明 举例
整数 666,-88
小数 13.14,-5.21
字符串 双引号括起来,内容不限 "helloworld"
字符 单引号括起来,内容只有一个 'A','0'
布尔 表示真假 只有true和false
空 特殊值 null,只能以字符串形式打印
\t 制表符 打印时把前面字符串补齐到8的整数倍,最少一个最多八个

2.3 变量

数据类型 变量名=数据值;
变量在使用前必须赋值,一条语句可定义多个变量

//整数
int a=10;
a=20; //修改a值
a=a+1;
浮点数double
计算机的存储规则: 说明
text文本 二进制以0b开头,八进制以0开头,十六进制以0x开头
image图片 黑白图、灰度图、彩色图,三原色红绿蓝
sound声音
基本数据类型 关键字,取值范围 占用内存,数据值存储在自己的空间中
整数 byte(-128~127),short(-32768~32767),int(-2^10 ~2^10-1),long(19位数) 1,2,4,8字节,long类型需要加L作为后缀
浮点数 float(-3.4e-38~3.4e+38),double(-4.9e-324~1.79e+308) 4,8,float类型F作为后缀
字符 char(0-65535) 2
布尔 boolean true,false 1

2.4 标识符

就是给类,方法,变量起的名字,

由数字字母下划线和美元符组成 不能以数字开头,不能是关键字,区分大小写
小驼峰命名:方法、变量 一个单词时小写name,多个单词firstName
大驼峰命名:类名 一个单词首字母大写Student,多个GoodStudent

2.5 键盘录入 Scanner类

导包--创建对象--接收数据

import java.util.Scanner;		//导包,必须在类上面
Scanner sc = new Scanner(System.in);	//创建对象,只有sc可变
int i = sc.nextInt();				//只有i是变量名

2.6 IDEA使用

2023安装包

psvm快速生成头部,sout输出,右键运行
project项目-module模块-package包-class类

3.1 运算符

运算符 符号 说明 应用
算数运算符 +加 -减 *乘 /除 %取余 整数只能得到整数,小数参与计算可能不精确 取余可以用来判断A能否被B整除、是否为偶数
隐式转换 把范围小的转成大的 byte,short,char都会先提升为int再进行计算
强制转换 把范围大的赋值给小的 double a=12.3; int b=int(a);
当+字符串时为字符串连接符,多个+按顺序执行 当数字+字符时会先通过ASC-II表查找对应数字并转换成int
自增运算符 ++变量值加1,--减1 前后都可 a++先用后加,++a先加后用
赋值运算符 =、a+=b(a=a+b)、-=、*=、/=、%= 强制类型转换
关系运算符 ==、!=、>、>=、<、<= 成立为true,不成立为false
逻辑运算符 &与 |或 ^异或 !非 x>5 & x<15
短路逻辑运算符 &&短路与、|| 短路或 左边表达式能确定结果则右边不执行
三元运算符 关系表达式?表达式1:表达式2; 结果必须要被使用
其他运算符 &逻辑与、|逻辑或、<<左移低位补0、>>右移高位补0或1、>>>无符号右移高位补0
运算符优先级 ()最高、

3.2 计算机中补码

码类 说明
原码 十进制数的二进制表现形式,最左边为符号位
反码 正数不变,负数符号位不变其他取反
补码 正数不变,负数为反码+1

3.3 流程控制语句

语句结构 说明 备注
顺序结构 按代码顺序从上到下
分支结构 if语句,其中关系表达式值为true就执行语句体, if(关系表达式) 只有一句可以省略大括号,判断布尔类型不要用==直接写变量
循环结构 for(初始化;条件判断;条件控制) 初始化只执行一次
只知道循环条件 while(条件判断\) while循环结束后变量能继续使用

if……else if……else
switch(表达式){case 值1,值2:语句体1;break;default:语句体n+1;break;}
switch(表达式){case 值1,值2 -> 语句体1;default -> 语句体n+1;}
初始化;do{循环体;条件控制;}while(条件判断),先执行一次后判断。

while可在循环前自定义名称,可break名称;跳出while循环。

3.4

跳转控制语句,for嵌套if,continue结束本次循环继续下次循环,break结束循环,简写100.fori

import java.util.Random;		//获取随机数Random
Random r = new Random (9) + 7;  //范围7-15
int number = r.nextInt(随机数的范围);

4. 数组

数组 存储同种类型数据的多个值 说明
数组定义 int[ ] array或者int array[ ]
初始化 int[ ] array={1,2,3};
直接打印会输出地址值 如[D:776ec8df 其中[表示数组,D表示数据类型,后面是十六进制地址值。
访问元素 int number = arr[0]
存储到数组 arr[0] = 100
遍历数组 arr.fori
动态初始化 int[ ] arr = new int[3],3为数组长度,默认初始化0 只知道元素个数不知道具体值
静态初始化 int[ ] arr = {11,22,33}; print不换行
内存分配 说明 备注
栈 方法运行时使用的内存,如main方法 开始执行进栈,结束出栈
堆 存储对象或数组,new创建的 地址值
方法区 存储class文件
本地方法栈 JVM使用操作系统时使用
寄存器 给CPU使用
方法 method 是程序中最小的执行单元把一些代码打包在一起,需要就调用 调用方法
普通 public static void main(){} main();
带参数 public static void main(int num,int num2){} main (num1,num2);
带返回值 把void改成返回值类型,在方法体中加return 返回值; 直接调用,赋值调用,输出调用,返回调用处
重载关系 同一个类中定义多个同名的方法 形参不同

执行到return表示整个方法全部结束
方法被调用就会进栈执行
引用数据类型,自己空间存储地址值,数据在其他空间,传递的地址值

二维数组 静态初始化 int[][] arr = new int[][]{{}{}};
动态初始化 int[][] arr = new int[m][n];

5. 面向对象

面向对象 说明 备注
类和对象 必须先设计类(共同特征的描述,设计图),才能获得对象(真实存在的具体实例)
封装 正确设计对象的属性和方法 对象代表什么就封装对应的数据并提供相应行为
private权限修饰符 只能在本类中访问 set,get,public int getage()
成员变量和局部变量 方法中是局部变量,类中方法外是成员变量,就近原则 this.name局部变量
构造方法 方法名与类名相同,没有返回值类型,没有void,没有return 如果没有定义构造方法系统会给一个默认的无参构造方法
标准javabean类 成员变量使用private修饰,至少提供无参构造和全部参数构造 成员方法提供对应的serxxx和getxxx,若有其他行为也要写上,alt+insert,安装ptg插件
内存分配,方法区,一个对象的内存图 加载class文件,申明局部变量,在堆开辟空间,默认初始化,显示初始化,构造方法初始化,将堆内存中的地址值赋值给左边的局部变量
this 本质代表方法调用者的地址值
printf 第一部分要输出的内容%s,第二部分填充的数据,没有换行效果

6. API&字符串

Application Programming Interface 应用程序编程接口(别人写好的,直接使用)
Scanner键盘录入,Random随机数

- - -
String字符串 内容不会改变,它的对象在创建后不能被更改。 创建string对象
遍历字符串 str.charAt(i)
截取字符串 str.substring(0,2) 包头不包尾,一个参数表示大于的索引
替换 replace(旧值,新值)
StingBulider() 容器,内容可变 append添加,reverse反转,length长度,tostring转为string
StringJoiner() 容器,内容可变,指定间隔,开始结束符号 一个参数为间隔符号,add添加元素
底层原理 没有变量参与编译后就是拼接结果会复用串池中字符串,有变量参与每次都会在内存中创建新的字符串浪费内存 stringBuilder所有拼接内容都放在里面不会创建新的节约内存
StringBuilder底层原理 创建默认数组容量16,不够则扩容16*2+2,超过34以实际为准
str.toCharArray(); 先转成字符数组,再通过new String变回字符串

new是创建新的地址值
== 基本数据比较的是数据值,引用数据是地址值
boolean equals完全一样才是true,equalsIgnoreCase忽略大小写
链式编程:调用方法时不需要用变量接收他的结果,可以继续调用其他方法。

7. ArrayList

集合 说明 备注
ArrayList<String> 自动扩容 boolean add增 remove删 set改 get查
基本数据类型对应的包装类 char,int Character,Integer,其他的首字母大写

封装思想:可以把多个数据封装成一个对象

8. 面向对象进阶

面向对象 1 2
static 静态变量,被该类所有对象共享,类名调用或者对象调用 静态方法多用在测试类和工具类中
2 静态方法只能访问静态变量和静态方法且没有this关键字,非静态都可以访问 静态变量,方法不能调用非静态方法
javabean类 用来描述一类事物的类,如student
测试类 检查其他类是否书写正确,带有main方法,是程序的入口
工具类 帮我们做一些事情但不描述任何事物的类。 类名见名知意,私有化构造方法
继承 子类extends父类,支持单继承,多层继承 每个类都继承于Object,不能继承构造方法,能继承成员变量,只能继承非私有成员方法
就近访问成员变量 super调用父类变量
就近访问成员方法 @Override重写父类方法,重写的名称形参必须一致 子类访问权限必须大于等于父类,返回值类型小于等于父类,public>protected
子类默认先访问父类的无参构造,再执行自己
多态,同类型的对象表现出的不同形态 有继承关系,有父类引用指向子类对象,有方法重写 成员变量编译运行看左边,成员方法编译看左边运行看右边
多态不能调用子类的特别功能,instanceof判断类型
包,管理不同功能的java类,方便后期维护 公司域名反写+包的作用为包名,全部小写见名知意 同一个包中类或者java.lang中不需要导包,其他都需要,若同时使用两个包中的同名类需要用全类名
final最终的,不能被修改 方法不能被重写,类不能被继承,变量为常量 final记录的地址值不能改变,内部属性可变
常量 单词全部大写,单词之间下划线隔开
权限修饰符,控制成员被访问范围 private<不写<protected<public
代码块 局部只在大括号内有效、构造代码块写在成员位置,抽取构造方法中重复代码,优于方法执行 静态代码块数据初始化static{},随着类加载,只执行一次
抽象类abstract 抽象类不能创建对象,可以有构造方法,子类要么重写所有抽象方法要么抽象类
接口interface 通过implements关键字实现,可以多实现 可以继承一个类同时实现多个接口
接口中成员变量只能是常量,默认public static final修饰 没有构造方法
接口和接口关系 JDK8以后可以定义有方法体的方法
default默认方法 不是抽象方法不需要重写,若重写去掉default,可省略public
接口中的静态方法static JDK9可以定义私有方法包括普通的和静态的
中间类XXXAdapter,设置为抽象类 适配器设计模式
内部类,类的五大成员之一(属性,方法,构造方法,代码块,内部类) 内部类可以直接访问外部类成员包括私有,外部类要访问内部类必须创建对象 分为成员内部类,静态内部类,局部内部类,匿名内部类
成员内部类 写在成员位置 当成员内部被private修饰时,在外部类编写方法返回内部类对象,非私有直接创建对象,outer.this.变量
静态内部类,static修饰 只能访问外部类的静态变量和方法(直接.),非静态需要创建对象
匿名内部类 隐藏名字的内部类,new Inter(){重写方法};

快捷键

System.exit(0);停止虚拟机

快捷键 说明
shift+F6 快速修改方法内同名词
ctrl+alt+L 格式化代码
ctrl+p 显示参数
ctrl+d 复制粘贴到下一行
ctrl+alt+t 语句包裹
alt+enter 通过名字 快速创建方法
内存分析工具 jps、jhsdb hsdb
posted on 2023-09-15 13:19  dzw9  阅读(44)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3