- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 层序遍历二叉树
层序遍历需要借助对列来进行 public static void leveOrder(TreeNode root){ Queue<TreeNode> queue =new LinkedList<>(); queue.offer(root); while(true){ TreeNode cur=queue.poll(); if(cur==null){ br
2021-03-17 20:51:42 152
原创 给定一个二叉树,检查它是否是镜像对称的
https://leetcode-cn.com/problems/symmetric-tree/所谓的堆成,和根节点关系不大,主要是看左右子树是否互为镜像比较左右子树的镜像关系=左右子树数根基欸但的值是不是想等&&左子树的左子树 和 右子树的的右子树是不是镜像关系&&左子树的右子树和右子树的左子树是不是镜像关系class Solution { public boolean isSymmetric(TreeNode root){ if(root
2021-03-17 20:23:13 228
原创 数据结构1
数据结构中具体内容1线性表顺序表 Arraylist/vector链表 LinkedList2栈和队列栈 Stack队列 Queue3.树普通树二叉树堆 优先队列PriorityQueue二叉搜索树TreeSet/TreeMapB树/B+树4.哈希表 HashSet/HashMap5.图
2021-01-29 11:47:20 172
原创 异常
异常时程序运行时出现的问题。(.java转.class)异常其实是帮助程序员解决问题的一种手段异常的种类狠毒,分别代表不同的含义,一旦出现某个异常,此时这个异常的意义时明确的,明确的告诉程序员出现异常的原因。为什么要引入异常,防御式编程,防御式编程的体现形式1.LBYL: Look Before You Leap. 在操作之前就做充分的检查.2.EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获取原谅比事前获取许可更容易”. 也就是
2021-01-24 17:09:08 173
原创 抽象类与接口
抽象类不需要去实例化(没有实例化必要的类)就可以作为一个抽象类没有方法体,只是为了被子类重写的方法就可以作为一个抽象方法抽象类前加上abstract此时这就是一个抽象类,如果产生过hi创建抽象类的实例就是编译报错给方法前加一个abstract此时该方法就是抽象方法不需要方法体抽象方法只能再抽象类和接口中存在不能在普通类中存在抽象方法存在的意义就是为了让子类进行重写abstract关键字存在的意义就是让程序员明确的告诉编译器,这是一个抽象类,冰盖进行实例化,于是比那一起就i要做好相关的检查工作
2021-01-24 10:06:17 117
原创 java面向对象-多态
多态能够帮助我们解决大量的分支语句的情况1.向上转型父类的引用指向了一个子类的对象(看起来好像把子类的引用转成了父类的引用)例:public class Cat extends Animal {}public class Animal {}向上转型第一种情况 Animal animal1=new Cat();向上转型第二种情况 public static void main(String[] args) { //向上转型也可能存在在方法传参的过程中
2021-01-22 11:32:07 167
原创 重载重写的区别
重载是同一个作用域中,方法名字相同,参数不同(参数个数,参数类型)重写是父类和子类之间存在同名方法,参数相同,此时通过父类引用调用该方法就会触发重写,此时具体执行那个方法由动态绑定来决定。动态访问可参考 面向对象——多态...
2021-01-22 00:25:18 210
原创 面向对象继承“套娃”
继承规则创建子类实例的时候,会构造父类的实例(调用父类方法)初始化顺序:限制性就地初始化,再执行代码,再进行构造方法。(不分先后顺序)yxyz1.new Z()的时候会先构造父类的实例,进入x中执行2.构造x的实例的时候,先就地初始化再调用构造方法,于是进入yzhixing3.执行y的构造方法,打印了y4.执行x的构造方法,打印x5.父类x已经准备就绪,开始进行子类z的初始化6.对于z来说也是先执行就地初始化,在调用构造方法7.就地初始化就是进入yzhixing,只需要调用构造
2021-01-21 16:38:22 283 3
原创 Java复习之面向对象(组合等)
组合组合是为了代码重用,也是面向对象的一个重要特征组合:学校拥有一个校长,拥有两个教师,拥有五个学生而不能说学校就是一个校长继承:猫是一种动物实际编程中,组合会用的多一些在一个类中存在其他类的属性称组合组合表示的语义 has - a(拥有xxx,包含xxx)继承表示的语义is - a (是xxx)向上转型:使用父类的引用指向一个子类的实例不同类型之间的引用一般情况是不允许两者相互赋值的,除非两者是父子的关系往父类的方向转“向上转型”三种方式在这里插入图片描述可省
2021-01-21 16:20:28 163
原创 java复习之面向对象3(继承)
继承目的就是为了让代码能够很好的被重复使用以前进行代码重用,主要是通过方法来完成继承是为了把类进行重用继承相关的核心概念1.父类(被继承)基类 超类2.子类(继承的)派生类 子类extends 关键字 保持现有功能存在的前提下,加入了新的功能...
2021-01-20 23:41:53 275
原创 synchronized关键字
Java中的一个关键字“同步”一个方法加上了synchronized关键字,很可能就是线程安全的。同步:计算机中常见的术语这个术语在不同的上下文中,表达的含义不一样典型含义(1)互斥(2)控制多个单位“步调一致”(3)和异步相对,IO输入输出,交互场景中。例子:使用打电话方式来沟通就是同步而使用qq微信联系就是异步。...
2021-01-19 21:43:15 108
原创 字符串部分常用操作
字符串包含关系String a ="hello world";String b ="world";.contains()b是a的字符串字串/子字符串a就包含b String a="hello world"; String b="world"; System.out.println(a.contains(b));结果true 证明包含 String a="hello world"; String b="worldd"; System.out.pri
2021-01-19 21:42:49 215
原创 compareTo()方法与compareToIgnore()方法
比较字符串的大小 String a="hello"; String b="hallo"; //compareTo返回的是一个int //a比b小,返回<0的数 //a比b大,返回>0的数 //相等返回0 int result=a.compareTo(b); System.out.println(result);结果是4结果是两个不一样的位数的ascall值的差...
2021-01-19 16:02:36 373
原创 反射修改String的内容
import java.lang.reflect.Field;public class Main{ public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { //反射是和封装背道而驰的1使用反射可能打破封装,代码复杂容易出错 //反射牺牲了编译器自身的检验机制,更需要人工保证代码的正确性 //通过反射方式修改String的
2021-01-18 22:54:59 470
原创 字符,字节,字符串转化
字符转字符串用字符数组实现char[] value={'a','b','c'}; String srt=new String(value); System.out.println(srt);字符串转字符用字符串.charAt(下标)的方法实现 String s="abcd"; System.out.println(s.charAt(0)); System.out.println(s.charAt(1)); Sys
2021-01-18 21:48:13 205
原创 java中final
简而言之Java中final的主要功能有两个:1.final修饰一个变量,表示是常量。如果修饰的是引用类型,表示引用的指向不能被修改(引用中存的地址不能修改)。2.final修饰一个类,表示这个类不能被其他类继承...
2021-01-18 21:31:13 114
原创 复习之面向对象2
在jvm中的内存区域中除了堆,栈之外还有一个方法区二进制指令,cpu来执行方法中存的是一个一个的“类相关的信息”(每个类的方法的二进制指令也是存在这里的)对于属性来说,如果一个属性是一个实例属性,那么不在方法区而是跟着实例走(实例一般在堆上)二如果属性是一个类属性(用static修饰),那么也就在方法区中。对于方法来说不管是加static还是不加static都是在方法区中。在操作系统中,一个进程的区域,也备份成若干个部分,也是有堆,栈代码段…而在jvm中也是对内存进行了划分,这个是jvm自己从
2021-01-18 19:33:57 92
原创 String的intern()方法
public class Test20210118 { public static void main(String[] args) { String a ="qazwsxedc"; String b =new String("qazwsxedc").intern(); System.out.println(a==b); }}结果是truepublic class Test20210118 { public static vo
2021-01-18 11:06:59 121
原创 Java复习之面向对象(1)
从代码/语法的角度看待类:自定义类型(高配结构体)对象:自定义类型创建出来的变量类相当于把现实事物的属性和行为结合到一起了。光有一个类还不够,还需要根据这个类创建一些具体对象,这个操作也称为“实例化”当我们创建好对象和实例后,核心操作是访问成员变量(属性),访问成员方法(函数)通过“.”操作符...
2021-01-17 20:56:06 122
原创 Java 复习之引用
引用本质上是一个低配指针(引用就对应一小块内存空间里边存的就是一个地址)引用指向对象的规则final影响的是引用的指向但是不会影响内部的元素数值修改。这里的b是内置类型不是引用类型,正确的写法应该是上边的Java中常用引用支持的操作...
2021-01-08 11:23:38 97
原创 java 复习之数组(2)
数组的遍历数组的遍历使用for循环与foreach来实现for(int i =0;i<arr.length;i++){ System.out.println(arr[i]); } for (int x:arr) { System.out.println(x); }foreach使用时针对x修改不会对数组的访问有影响这里的arr是已知数组。通过修改a[0] 可以改变arr[0]的数值Java
2020-12-28 16:21:38 130
原创 Java复习之数组(1)
Java的数组本质上就是让程序员能够批量创建一组相同类型的变量。通过数组可以批量产生一大堆的变量出来。对于一些语言来说(c、c++、java、GO)都要求数组中的变量是相同类型的,这类语言往往能让程序在使用数组元素时更加高效对于(JS、Python、PHP)中是不要求数组中的变量是同一类型的,这类语言在使用数组元素时往往更加灵活。数组的创建方式//数组元素通过{}来指定int[] arr = new int []{1,2,3,4};数组元素通过{}来指定int[] arr = {1,2,3,
2020-12-27 21:19:21 211
原创 java 复习之方法重载
重载(overload) System.out.println(add(10,20)); System.out.println(add(10.5,10.5)); } public static int add(int x,int y){ return x+y; } public static double add(double x,double y){ return x+y; }这是对一个加法的重载。J
2020-12-27 17:46:46 102
原创 java 复习之方法(2)
JVM中的栈JVM也是操作系统创建出来的一个java进程本来一个程序对于内存的使用都是要通过操作系统来进行管理的Java里为了让内存的管理更加方便,会在JVM进程启动的时候直接从操作系统这里申请一大块内存,自己进行管理。JVM会对申请道德这一大块内存进一步的进行区域划分,其中的一块区域,就称为栈。栈里存在的是一些特定的内容,核心就是方法和方法之间的调用关系。入栈:调用某个方法就会把该方法对应的一些信息,放到栈里出栈:当某个方法执行完毕,就会将对应的信息从栈中删除掉当一个方法被执行完了元素
2020-12-27 17:15:21 103
原创 String的equals方法与.equalsIgnoreCase()
public static void login() { String pasword = "123456"; System.out.println("请输入密码:"); Scanner scanner = new Scanner(System.in); int i=0; while ( i < 5) { String input = scanner.next(); if (
2020-12-27 11:22:14 164
原创 java复习之方法(1)
方法本质上是一段可以被重复使用的代码每个方法只完成一个工作把代码拆成多个方法的时候就能提高效率和减少出错率下面展示一个阶乘求和的方法而在c语言中函数定义如果写在函数调用的上方,不用写函数声明,如果在下方或者其他文件中调用时需要声明函数。这个规则不是很合理java中不存在这个问题方法调用时需要传入实参,实参的数目和类型与形参的数目与类型必须一致如果不匹配就会编译出错...
2020-12-26 21:30:54 140
原创 Java复习之随机数生成方法
随机数采用Random来实现的Random random=new Random();//[0-100]int num =random.nextInt(|boumd:|100)+1;|在IDEA中会自己弹出|
2020-12-26 19:19:27 146
原创 java复习之变量(2)
字符串拼接int 转String在字符串参与的拼接中+是起到一个拼接作用此处如果需要参与数学运算,则需要使用()改变优先级使用valueof方法改变int的类型,int转化StringString 转int这里采用包装类来对String进行转换这里String转int时会发生运行错误原因是待转化类型与int无关编译是会报错java的输出取余操作中负数的余数也是负数 Java中可对小数求余结果是0.5自增自减用为代码的形式看前后置++通过伪代码可以观察到前置++比后置++
2020-12-24 16:19:38 91
原创 Java复习之变量(1)
基本类型四类八种变量整数:byte short int long浮点数:float double字符:char布尔:boolean引用数据类型:类引用,接口引用,数组引用变量的形态首先在Java中无全局变量局部变量在方法中,成员变量在类内部方法外部 静态属性用static修饰。在Java中int占4B字节int 范围-2 ^ 31->+2 ^ 31 -21亿-+21亿int最大值最小值public class Test { public static void mai
2020-12-23 16:48:55 142
原创 Java常量池与java包装类
在Java中常量池在java中用于保存编译期已经确定的,它包括了关于类,方法,接口中的常量,也包括字符串常量。例如String s = “Java” 这种声明的方式。产生的这种"常量"就会被放到常量池,常量池是JVM的一块特殊的内存空间。使用Java常量池技术,是为了方便快捷地创建某些对象,当你需要一个对象时候,就去这个池子里面找,找不到就在池子里面创建一个。但是必须注意 如果对象是用new 创建的。那么不管是什么对像,它是不会放到池子里的,而是向堆申请新的空间存储。public class L {
2020-09-17 20:57:31 212
原创 java输入10个数输出最小数及下标
import java.util.Scanner;public class Shuzu { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x [] = new int [10]; System.out.print...
2020-04-17 14:57:37 2213
原创 求两个数的最大公约数
#include<stdio.h>main(){ int m = 24; int n = 18; int min = (m>n?n:m); while(1) { if(m%min==0&&n%min==0) printf("最大公约数:%d\n",min); bre...
2020-03-20 19:16:40 174
原创 C语言打印1~100之间3的倍数
#include<stdio.h>main(){ int i =1; while(i<=100) { if(i%3==0) printf("%d",i); i++ }}
2020-03-20 19:01:11 3231
原创 c语言比较三个数的大小
#inclued<stdio.h>main(){ int a = 0; int b = 0; int c = 0; scanf("%d%d%d",&a,&b,&c);//a=1b=2c=3 if(a<b) { int tmp = a; a=b; b=tmp } ...
2020-03-20 18:56:50 14027 6
原创 输出1-100的奇数
方法1#include<stdio.h>int main(){ int i=1; while(i<100) { printf("%d",i) i=i+2 }}方法2#include<stdio.h>int main(){ int i=1; while(i<=100) { if(i%2==1) ...
2020-03-20 12:01:50 419
原创 经典案例之交换两个变量的值(三种方法)
第一种,创建一个临时变量#include<stdio.h>int main(){int num1 = 10;int num 2 = 20;int empyt = 0;emtyp = num1;num1 = num2;num2 = empty;return 0;}第二种,利用加法不创建临时变量(缺陷如果数据过大,会导致数据溢出问题。)#include<st...
2020-03-17 23:05:36 1138
原创 计算机随机输入1~100中间的数字由用户进行猜测(java)
重点在于利用Math.random()让计算机为用户提供数值该范围是【0~1),可进行其他附加操作使得输入数值范围发生改变。
2020-03-15 16:56:49 1554
原创 c语言日记
\0 会占用一个字节长度输出字符串长度的时候\0不计入字符串长度sizeof 计算字节~a按位取反结果-11++ - -解释a- -对a本身-1(后置- -):先使用a的值在进行- - 运算b=10 a=9a (前置- -):先运算- - 后使用(++同理)强制类型转换条件操作符(三目操作符)a>b为真,a代表整个表达式的值 a>b为...
2020-03-15 12:50:03 268 1
深藏不漏队资料.rar
2020-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人