JavaNote
2024-07-03 17:34:27 2 举报
AI智能生成
对Java知识进行梳理
作者其他创作
大纲/内容
认真听课 都能学会 都能学好
细节
文档注释的格式
String--->其他类型用parse方法
String-->char
两个数的比较相等用if(Math.abs(n1-n2)<=n);两个数差值的绝对值,在某个范围内比较,符合条件则认为它们近似相等,浮点型数字都是近似值
键盘输入
import java.util.Scanner;
Scanner myTools = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = myTools.nextInt();
System.out.println("请输入你的性别");
char gender = myTools.next().charAt(0);
随机生成整数((int)(Math.random()));[范围是大于等于0,小于1]
比较两个字符串地址内容相同equals
方法1
变量名.euqals("丁真");
方法2
"丁真".equals(变量名);
判断输入的数是否属于数组的数,不属于的话输出不属于的方法
index(索引)
在for循环外定义一个 int index = -1或者除0-数组范围内的数字,如果满足条件就在条件下 写上循环变量迭代index++;在for循环外,输出if(index == -1) {System.out.println("您输入的数字不存在");}
court(计数器)
在for循环外定义int court = 0;如果满足条件就循环变量迭代court++;在for循环结束后输出,if(court == 0) {System.ou.println("您输入的数字不存在");}
通过使用哈希输出对象/方法的哈希值来比较地址/数据空间是否相同
比较this和方法还有new对象数据空间是否相同/地址是否相同
new 一个对象
Animal acry = new Animal("大米",19);
输出调用hashCode方法
System.ou.println("对象1acry的hashCode" + acry.hashCode());
构造器
public Animal(String name,int age) {this name = name;this age = age;System.out.println("构造器的hashiCode" + this.hashCode());}
info方法
public void info(int age,String name) {System.out.println("hello world~")System.out.println("this的hashiCode" + this.hashCode()); }
当方法有返回boolean值时,可以直接返回条件
Java概述[12]
程序定义
Java历史
Java运行机制及开发步骤
JDK、JRE、JVM的关系
为什么要配置环境变量Path及作用
系统配置与账户配置的区别
初学JAVA易犯错误[5]
JAVA的开发注意事项[8]
Java代码规范[7]
注释
单行 //
多行 /* */
文档注释 /** */
方法:javadoc -d d:\Cute -author -version hello.java
DOS命令
dir
cd/D d:
cd d:23
tree
md
rd
copy
del
echo
type
转义字符(字表位)
\t
\n
\\
\"
\'
\r
相对路径与绝对路径
绝对路径
相对路径
变量[6]
定义
程序
变量
变量使用的基本步骤[3]
使用注意事项[6]
Java数据类型[2]
基本数据类型[8]
数值型[4]
byte[1]、short[2]、int[4]、long[8]
细节【4】
浮点型[2]
float[4]、double[8]
细节【5】
字符型【Char】[2]
只存放一个字符
细节【4】
存储与读取
布尔型【boolean】[1]
只存放True/False
细节【2】
引用数据类型
类(class)
接口(interface)
数组【】
JavaAPI文档使用
jdk类组织形式
jdk
包1
包2
接口
类
字段
构造方法
方法
异常
包n
使用
通过包找到对应的类在通过类找到对应的字段方法
方法1
包--->类-->字段/方法/构造方法
方法2
通过索引搜索对应的类
如:Arraylist 、 Math、、next
数据类型转换
自动数据类型转换
二线
细节[5]
强制数据类型转换(有精度损失/溢出)
细节[4]
基本数据类型转换
声明变量-->使用变量
基本-->String
变量 + “”
String--基本
用到方法
String--->char
但字符串不能是英文,字符串-->字符,默认输出第一个字符
运算符[5]
主要符
算术运算符[7] AritmeticOperator
+
-
*
/
%
++i
i++
关系运算符(比较)RelationalOperator
>
<
==
>=
<=
!=
instanceof
逻辑运算符 LogicOperator
与
短路与&&
语法
逻辑与&
语法
或
短路或||
逻辑或|
其他
取反!
逻辑异或^
赋值运算符 AssignOperator
+=
-=
*=
/=
%=
三元运算符 TernaryOperator
基本格式
条件表达式 ? 表达式1 : 表达式2
语法
标识符
规则[5](必须遵守)
26字母大小写,数字0到9 ,_ 和$
不能以关键字或保留字(goto)命名标识符,但可包含如:hhString cutePublic eeclass
关键字与保留字
关键字
public static class.......
Character:所有字母都为小写
保留字
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
会在以后的Java版本中用到
不能数字开头
不能有空格
Java严格区分大小写 长度无限制
规范[4](更专业)
包名:所有字母都用小写
类名和接口名用“大驼峰”-->每个英语单词的首字母要大写
变量名和方法名用“驼峰法”-->小驼峰-->开头的英语单词用小写,后面的英语单词首字母用大写
常量名所有字母用大写,多个单词用__下划线来连接
进制(程序员的基本功)
其他进制转十机制(乘)
二进制-->十进制
八进制-->十进制
十六进制-->十进制
十进制转其他进制(除)
十进制-->二进制
十进制-->八进制
十进制-->十六进制
二进制转其他进制
BIN-->OCT
将二进制数每3个位一组(从右往左)
将三个数如101转成10进制数再相加
ob11(3)010(2)101(5) => 0325
BIN-->HEX
将二进制数每4个位一组(从右往左)
将四个数 转成10进制再相加
ob1101(D)0101(5) = 0xD5
其他进制转二进制
OCT-->BIN
将八进制数每 1 位,转成对应的一个 3 位的二进制数即可
02(010)3(011)7(111) = 0b10011111
HEX-->BIN
将十六进制数每 1 位,转成对应的一个 4 位的二进制数即可
0x2(0010)3(0011)B(1011) = 0b001000111011
原码,反码,补码[7]必须背下来
二进制最高位为符号位。0表整数,1表负数(倒着来看)
正数的原码、反码、补码都一样(三码合一)
负数的反码=原码符号位不变,其他位取反(0-->1 .1-->0)
负数的补码=负数的反码+1 (满二进1原则二进制中) 负数的反码=负数的补码-1
0的补码和反码为0
计算机运算时(+ - * / >> >>> <<) 用的是补码
先得到补码 再进行运算
查看运算结果 看的是原码
位运算符
1
按位与 &
两个数为1,结果才为1,否则为0
按位或 |
两个数有一个为1,结果为1,否则为0
按位异或 ^
一个数为0,另一个数为1.则结果为1,否则为0
按位取反 ~
0--->1 , 1-->0
2
算数右移>>
符号位不变,低位溢出 符号位补高位
01101011(补码)向右移动5位-->011-->00000000 00000000 00000000 00000011-->符号位为0 正数 三码合一 原码--> 00000000 00000000 00000000 00000011 // 11(BIN)-->3(DEC) 符号位为0 为正数 结果为+ 3
3>>4
3/2 /2 /2 /2
算数左移<<
符号位不变,高位溢出,低位补 0
00000011
3<<2
3*2 *2
逻辑右移>>>
正数情况与算数右移>>相同
低位溢出,高位补 0
程序控制结构
控制
顺序控制
直接由上至下执行,无判断
先声明变量,赋值,再使用变量
分支控制(if--else)
程序有选择的执行
单分支
if
双分支
if - else if
多分支
if - else if ..... else
循环控制(难点)
for循环
基本语法
for(循环变量初始化;循环条件;循环变量迭代) { 循环体;}
while循环
基本语法
循环变量初始化;while(循环条件) {循环体;循环变量迭代;}
算个数和总和的位置选放区别
do.while循环
基本语法
do {循环体;循环变量迭代;}while(循环条件);
多重循环(难度,重点)
99乘法表
金字塔
数组
定义
引用数据类型
一维数组
静态初始化
已经知道具体元素,元素不多的情况
基本语法
数据类型[] 数组名 = {};
数据类型 数组名[] = {};
动态初始化1
声明数组
数据类型[] 数组名;
使用变量 new一个空间
数组名 = new 数据类型[下标]
动态初始化2
声明数组使用数组一步到位
数据类型[] 数组名 = new 数据类型[]
一维数组的基本运行原理
数组
扩容
缩减
细节[7]
数组的数据类型必须是同一数据类型 或者可以自动类型转换的类型
double[] num1 = {1,2,3,4,6};
int-->double满足自动类型转换
String[] num2 = {"jAkc","YOASOBI"."Anthemlights"};
声明数组,使用数组
数组的下标/索引从0开始
数组的数组类型可以是自动类型转换类型也可以是引用数据类型,但它们不能混用
如果声明数组,没有赋值有以下五种情况
整形(byte,short,int,long)默认值0
浮点型(float,double) 默认值0.0
字符型(char)默认值 \u0000
字符串(String)默认值 null
布尔型 (boolean)默认值 false
数据的下标必须在指定范围内使用
double[] score = new double[2]//创建数组
score[0] = 23.2; score[1] = 78.9;
遍历for循环
System.out.println(score[2]);
错误,因为下标/索引是从0开始的创建对象时只有2个元素,所以输出score[2]会出现异常
数组的数据类型是引用型,数据型数据是对象(object)
二维数组
定义
二维数组的每一个元素都是一个一维数组
需要遍历两次
第一次是arr遍历二维数组的元素(每一个一维数组)
第二次遍历一维数组的元素
方式
动态初始化1
数据类型[][] arr = new 数据类型[3][];
二维数组分配了3给元素(一维数组)但元素的值为null
因为还没有new数据空间
动态初始化2
声明二维数组
再new二维数组的空间
int[][] arr;
arr = new int[3][4];
二维数组中有三个一维数组每个一维数组有四个元素
所以先arr遍历二维数组的每一个元素
遍历一维数组的元素
for(int j = 0;j < arr[i].length;j++) {arr[i][j]}
for(int i = 0;i < arr.length;i++) {}
arr.length代表一个二维数组的长度/大小
arr[i].length代表每个一维数组所含的元素
静态初始化
数据类型[][] arr = {{数组1},{数组2}};
案例
TwodimensionArray01
思路分析
一个二维数组有4个元素(4个一维数组)每个元素有6个值
1.静态初始化-->已知二维数组的元素和元素所对应的值
int[][] arr = {{0,0,0,0,0,0},{0,0,1,0,0,0},{0,02,0,3,0,0},{0,0,0,0,0,0}};
2.for循环arr遍历二维数组元素
for(int i = 0;i < arr.length;i++) {}
3.for循环遍历一维数组元素
for(int i = 0;i < arr.length;i++) {for(int j = 0;j < arr[i].length;j++) {}}
4.打啵for循环遍历输出
TwodimensionArray02
TwodimensionArray03
思路分析
一个二维数组有3个一维数组 每个一维数组的元素为1 / 2 / 3
1.动态初始化-列数不确定的数组
int[][] arr = new int[3][];
此时的二维数组的一维数组是空,没有赋值也就没有地址
2.for循环arr遍历二维数组的元素
for(int i = 0; i < arr.lenghth;i++) {arr[i] = new int[i + 1];}
3.for循环遍历一维数组的元素,此时一维数组有地址分配了空间但没有元素
for(int i = 0; i < arr.lenghth;i++) {arr[i] = new int[i + 1];for(int j = 0;j < arr[i].length;j++){arr[i][j] = i+1}}
4.for循环遍历输出
TwodimensionArray04
解释
一个二维数组有3个一维数组(元素),前两个一维数组有三个元素,最后一个一维数组只有一个元素
最后一个一维数组的元素不能写成100的原因
因为二维数组的每一个元素都是一个一维数组,是引用数据类型,如果写成100变成基本数据类型int型,不满足二维数组的定义
TwodimensionArray05
思路分析
化繁为简
1.创建一个元素数组
2.arr遍历二维数组的元素(一维数组)
for(int i = 0;i < arr.length;i++) {}
3.遍历一维数组的元素
先死后活
YangHui
二维数组的底层原理
Homework
子主题
子主题
子主题
4
定位
扩容
子主题
6
char[] elements = new char[26]
内存中分配了26个char类型的空间
element[i]
当数组分配了下标时它就是创建时的数据类型
char型
规律法反转
冒泡排序
遍历数组元素时,扩容/复制,条件写大范围
i 的长度为 arrNew.length(5);j的长度为 arr.length(4)
忘记了,就用内存分析法分析
类与对象(oop)
定义
类
某个事物的特点
属性
给属性直接赋值
int age = 17;
可以先不赋值属性,后面再赋值
main类new类对象,然后调用改类属性赋值
调用构造器,通过this.属性 = 形参name,,完成赋值
属性初始化
方法
对象
类的实例化对象
创建一个对象
内存中的调用机制
属性/成员变量/字段field-->全局变量
属性可以是基本数据类型也可以是引用数据类型
语法
访问修饰符(protected、private、public、默认) 数据类型 属性名
属性如果不赋值有默认值
: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,
boolean false,String null
boolean false,String null
new对象的方法
方法1
声明对象Donkey durz;
使用变量durz = new Donkey();
方法2
声明对象使用对像一步到位
Donkey durz = new Donkey();
访问属性方法
对象名.属性
类和对象在内存中的访问机制
成员方法
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容