- 博客(50)
- 收藏
- 关注
原创 git入门(更新ing)
一.Git的使用1.安装2.初始化仓库(1)新建文件夹,进入到该目录,右键打开git bash(2)在文件夹内初始化git(创建git仓库)命令:git init (会生成一个.git的隐藏文件)(3)仓库中添加信息git add 文件名-> 结果:new file:文件名 //工作区到暂存区git add * 添加所有文件git commit -m ‘描述信息’ //暂存区到仓库(4)仓库中修改信息修改完成后按照原来的程序再执行(5)删除文件git rm 文件名 如果想
2021-05-28 19:48:27
223
原创 XML与JSON最全入门整理
XML介绍简介可扩展标记语言(eXtensible Markup Language)。特性:xml具有平台无关性(win mac打开一样), 是一门独立的标记语言. (单独存在也有意义,自身可以描述自身)xml具有自我描述性(java c javascript 解析数据也是一样的)java是人与计算机交流的语言,XML与Json你可以理解为软件和软件交流的语言。比如A 程序员用java写客户端。B程序员用 c写服务器, 两个程序之间用什么格式交流,用xml和json交流。xml和json通常
2021-05-24 20:59:50
403
3
原创 网络编程入门
网络常识网络 编程程序的分类:TCP协议 - OSI网络模型三次握手 和 四次挥手 熟悉TCP 协议 的 C/S程序 ***ServerSocket常用构造方法:常用方法:Socket构造方法:常用方法:例子1左边服务器右边客户端,先启动服务器,终端显示服务器启动完毕,然后再启动客户端,服务器的客户端显示客户端连接成功,服务端程序执行结束。(accept方法等待客户端连接,如果客户端不连接就不会执行下面的内容)例子2import java.io.*;i
2021-05-19 22:40:02
123
原创 多线程入门你看这一篇就够了
线程与进程进程:是指一个内存,独立空间,你可以立即为每个进程都有自己的堆栈互补共享线程:多个线程共享一块内存空间,n件事情在一个进程中,当a线程创建一个变量,只要作用域匹配,bc都能找到他,线程可以自由切换,让某一个线程停止执行,另一个开始,也可以同时开始。一个进程至少一个线程,一个进程没有线程,也要马上被关闭。线程,是进程更细的划分,进程就是一个软件,线程就是软件里面的一个执行路径什么是多线程:我们以前 写的程序 从第一行到第十行顺序执行,如果我们想要写一个软件即可以同时播放音乐又可以同时接受用户输
2021-05-19 14:30:01
445
4
原创 谈谈==和equals的区别
比较基本数据类型时,只能采用==,比较的是数值当比较引用类型时,==比较的是引用的地址,而equals其实也是,我们查看到equals是Object定义的方法,而其默认的实现也是比较地址。而我们经常用到的String类型,因为重写了equals方法,其内部比较的是内容,所以String s1 = new String(“永远相信美好的事情即将发生”);String s2 = new String(“永远相信美好的事情即将发生”);System.out.println(s1.equals(s2));
2021-05-11 00:01:02
70
原创 集合类超级无敌史无前例的超详细总结
常用数据结构链表:你可以想象成自行车链子 一个拴着一个(data数据域和指针next组成),单向链表指针永远指向下一个,最后一个指针是null。双向链表,则有头和尾,循环链表尾指向头。二叉树:二叉树是树的一种,每个节点最多可具有两个子树,即结点的度最大为 2(结点度:结点拥 有的子树数)。若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树栈:队列:数组:集合和数组既然都是容器,它们
2021-05-07 21:19:25
156
原创 编写一个方法,将一段文本中的各个单词的字母顺序翻转
public class StringFunctionTest {public String myReverse(String str){ //将字符串按空格分割成数组 String[] arr = str.split(" "); //新的字符串 StringBuffer newStr = new StringBuffer(); //遍历数组 for (String s : arr) { // 将字符串转
2021-05-05 21:00:29
812
原创 String学习笔记
StringString表示字符串,所有的字符串都是String类的实例,字符串是不可变的,一旦创建后就无法修改。下面来说说他的特点。1、不可变类,线程安全。不可变类在java语言中使用final关键字实现,final有三个作用,简单的说修饰的类不可继承,方法不可重写,变量不可修改。而String类和存储字符数据的Char数组就是用final修饰的(简单来说我们说的字符串就是一串字符,内部是由char数组实现的),因此string类不可继承,内部数据(char数组)不能修改,对String进行替换,裁
2021-05-05 20:16:24
109
原创 常用类库(更新ing)
Objectsequals String s1 = null; String s2 = "abc"; //传统方法如果第一个比较的对象为null会报空指针异常 System.out.println(s1.equals(s2)); //使用Objects工具类比较则不会,下面我们来看看他的源码 System.out.println(Objects.equals(s1,s2)); 返回值为 fal
2021-05-05 15:32:53
157
转载 惊了0.1+0.2 不等于 0.3. 这是为啥呢????
如图0.1加0.2为什么就不等于0.3昵?要回答这个问题,得先了解计算机内部是如何表示数的。计算机内部如何表示数我们都知道,计算机用位来储存及处理数据。每一个二进制数(二进制串)都一一对应一个十进制数。1. 计算机内部如何表示整数这里以十进制数13来展示“按位计数法”如何表示整数:十进制值 进制 按位格式 描述13 10 13 1x10^1 + 3x10^0 = 10 + 313 2 1101 1x2^3 + 1x2^2 + 0x2^1 + 1x2^0 = 8 + 4 + 0 + 12.
2021-05-04 22:25:18
403
原创 char变量能不能存储一个汉字
在C语言中,char类型占1一个字节,而汉子占2个字节,所以不能存储。 在Java中,char类型占2个字节,而且Java默认采用Unicode编码,以个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。...
2021-05-04 14:28:13
2654
转载 Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值
Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型?Overload 是重载的意思,Override 是覆盖的意思,也就是重写。重载Overload 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。重写Override 表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象
2021-05-04 14:25:35
541
原创 Java 对象初始化详细过程
一个类及其对象初始化的过程一、什么时候需要初始化一个类首次创建某个对象时:Dog dog = new Dog();首次访问某个类的静态方法或者静态字段时:Dog.staticFields;Java 解释器就会去找类的路径,定位已经编译好的 Dog.class 文件。二、获得类的资源然后 jvm 就会载入 Dog.class,生成一个 class 对象。这个时候如果有静态的方法或者变量,静态初始化动作都会被执行。这个时候要注意啦,静态初始化在程序运行过程中只会在 Class 对象首次加
2021-05-04 14:19:56
733
原创 为什么要重写同equal和tostring方法
为什么要重写equal:equals是object类的方法,所有没有重写这个方法的类中使用这个方法比较的都是地址,和’=='是一样的,重写过这个方法的类就按照重写的方法来比较,比如String类就重写了这个方法,所以比较的就是内容eclipse快捷键可以直接生成,右键->source -> Generate hashCode() and equals();自动重写hashcode和equalidea 右键-> source->equals() and hashCode()必须
2021-05-03 18:56:21
339
原创 异常你看这一篇就行了,全程白话很好理解(完结撒花)
什么是异常?异常其实说白了,就是程序中可能出现的问题,Jvm告诉你,你去解决。其实从1995年java就在一直收集各种各样的异常问题,java把这一个个异常变成对象。jvm读到异常,创建一个对象,然后返回给你异常信息,异常信息就是报错红线如图,这就是一个异常,main指的是顺序走下来在你的主线程中出现了异常,InputMismatchException就是异常封装的对象,灰色字体是工具类的资源路径,蓝色字体是你程序中发生异常的位置,我们检查异常一定要先看蓝色的部分。那么这个异常是怎么产生的呢?
2021-05-03 00:18:58
114
1
原创 静态方法一些特点
首先,我们常见的main方法就是一个静态方法,它是程序的入口。但是,如果我在Test类中创建一个普通的成员变量,在main方法中却不可以访问,原因是因为main是static修饰的静态方法,只能访问静态变量,如果你想直接访问需要变量前面加上static(在本类中)。那为什么java中的main函数要定义为static?main方法是程序的入口,在此入口之前不会产生任何对象,所以如果main方法是非static的成员方法,jvm是无法调用的,就进不了入口,那么程序也无法运行。而static的main方法可
2021-05-02 19:18:06
1252
原创 一个类怎样调用另一个类中的属性和方法
一个类怎样调用另一个类中的属性和方法一般来说会用两种最常用的方式new一个对象,通过对象来调用类中的变量和方法如果一个类的方法是静态的,那么直接用类名.方法的方式就可以调用下面是用new对象的例子class Student {int studentNo ;String studentName;public void setStudent (int studenteNo, String studentName) {this.studentName = studentName;this.st
2021-05-02 19:00:49
6188
原创 递归
递归,在数学与计算机科学中,是指在方法的定义中使用方法自身。也就是说,递归算法是一种直接或者间接调用自身方 法的算法。 递归流程图如下:举一个实际的例子:计算5的递归,此时传入5然后进行判断,进入第二个选择语句计算54的递归的值,然后调用第二个fact方法(4),第一个fact方法等待,判断进入第二个选择语句执行4X3的递归,然后第二个fact方法等待…直到传入参数为1时执行11的递归计算结果为1,返回到前一个方法计算结果为2,…最后一次执行结果为5X24=120,至此返回最终结果。可见递归很消耗
2021-05-02 14:23:18
183
原创 可变参数一定要写在参数列表的末尾位置
可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式:修饰符 返回值类型 方法名(参数类型… 形参名){ }其实这个书写完全等价与格式:修饰符 返回值类型 方法名(参数类型[] 形参名){ }只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。JDK1.5以后。出现了简化操作。… 用在参数上,称之为可变参数。代码示例:package com.itheima.demo04.VarArgs;/* 可变参数:
2021-05-02 13:06:18
774
原创 包装类
概述在Java中有一个设计的原则“一切皆对象”,那么这样一来Java中的一些基本的数据类型,就完全不符合于这种设计思 想,因为Java中的八种基本数据类型并不是引用数据类型,所以Java中为了解决这样的问题,引入了八种基本数据类型 的包装类。包装类的作用是为了方便对基本数据类型进行操作.基本类型和引用类型的区别有以下几点:1.基本类型不是对象,而引用类型是对象.2.声明方式:基本数据类型直接声明,引用数据类型需要用new关键字创建.3.存储的位置:基本数据类型存储在堆栈中,引用类型则通过引用
2021-05-01 23:47:54
58
原创 局部变量前不能加任何权限修饰符(private ,public protected)
先看一段代码,在一个方法中定义一个int 变量public void delete(){private int a = 4;}如果在idea工具开发中,编译时期会提醒我们有错,错误提示是删除a的修饰符private,那为什么局部变量前不能用pirvate等修饰符呢?因为局部变量 本身就是 一个访问权限 的设定。 只能在局部调用,也就是说局部变量的生命周期在{}之中除了这个方法外界是没办法访问你这个变量,所以不需要用任何修饰符修饰,比如private ,public protected,等但是能加f
2021-05-01 21:42:00
2444
转载 接口
接口概念如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。定义格式: interface 接口名称{全局常量 ; 抽象方法 ;}面向接口编程思想这种思想是接口是定义(规范,约束)与实现(名实分离的原则)的分离。优点:1、 降低程序的耦合性2、 易于程序的扩展3、 有利于程序的维护全局常量和抽象方法的简写因为接口本身都是由全局常量和抽象方法组成 , 所以接口中的成员定义可以简写:1、全局常量编写时, 可以省略public static f
2021-04-29 22:26:43
60
原创 抽象类
概念抽象类必须使用abstract class声明,一个抽象类中可以没有抽象方法。抽象方法必须写在抽象类或者接口中。 格式:abstract class 类名{// 抽象类}抽象方法只声明而未实现的方法称为抽象方法(未实现指的是:没有“{}”方法体),抽象方法必须使用abstract关键字声明。格式:abstract class 类名{public abstract void 方法名() ;}不能被实例化在抽象类的使用中有几个原则:· 抽象类本身是不能直接进行实例化操作的,即:不能直
2021-04-29 22:03:39
455
1
原创 多态
概念多态:就是对象的多种表现形式,(多种体现形态)多态的体现从类来说,在类中有子类和父类之分,子类就是父类的一种形态 ,对象多态性就从此而来。从方法来说,方法的重载 和 重写 也是多态的一种。 重载: 一个类中方法的多态性体现 重写: 子父类中方法的多态性体现。多态的使用:对象的类型转换类似于基本数据类型的转换:·向上转型:将子类实例变为父类实例 |- 格式:父类 父类对象 = 子类实例 ;· 向下转型:将父类实例变为子类实例 |- 格式:子类 子类对象 = (子类)父类实例 ;多态使用
2021-04-29 21:39:37
76
原创 父类的属性或者方法被private修饰过之后,子类是否能继承的问题,以及this和super的区别...
首先,继承的定义:继承是指一个对象直接使用另一对象的属性和方法很明显,父对象被private修饰过的属性和方法,子对象无法直接使用(可以通过父类的get 、set方法间接使用)那么根据继承的定义来判断:private修饰过的都无法被继承得出结论之后,我自己写了一些代码进行测试。1. 使用继承后,父对象会随着子对象的创建而创建,根据内存加载的顺序也可以看出来。2. 父对象会比子对象早一步先创建:原因2.1 子类的构造方法第一句总是要写上父类的构造方法,用来创建父对象,因为继承是发生在对象与对
2021-04-29 19:21:52
1112
原创 Java中如果父类方法使用private定义,子类使用public 覆写,是否正确?
看以下代码:父类使用private定义的方法,子类使用public覆写:class Father{ public void fun(){ this.print(); } //如果现在父类使用了private定义,那么就表示该方法只能被父类使用,子类无法使用,换句话说,子类是不知道父类有这样的方法的。 private void print(){ System.out.println("Father类的print方法"); }}cla
2021-04-29 19:19:04
898
原创 final
final修饰符final修饰符可以修饰类,方法,变量;final修饰类:final修饰的类不可以被继承final修饰方法:final修饰的方法不可以被重写final修饰变量:finnal修饰的变量为常量,不可以被再次赋值final修饰的局部变量,只可以被复制一次,第二次就会报错final修饰的成员变量必须要赋值,不然会报错全局常量(pubulic static final )pubulic:所有位置都可以访问static:类名. 就可以使用final : 不可被修改常量命
2021-04-29 18:58:05
87
原创 重写规则及重写与重载的区别
子类一定要重写父类方法?子类是否一定要重写父类的方法呢?答案当然是否定的,分为以下两种情况:1.父类方法为抽象方法时,子类必须重写(实现)所有父类的抽象方法;2.父类方法为普通方法时,子类可以重写父类方法,也可以不重写abstract class A{ public void a(){ } public abstract void b();} public class B extends A{ //必须重写b方法,a方法可以不重写 p
2021-04-29 14:33:02
273
转载 为什么java构造函数的构造器只能在第一行写this()或者super()
在说这个问题之前,首先得要明白super()和this()的意义:this() 之所以存在, 我个人认为原因很简单, 就是为了代码的复用(纯粹的个人观点, 不知道是否正确)super()之所以存在, 是有很重要的原因的! 因为子类与父类之间是继承关系, 而继承就意味着得到父类中所有的成员变量和方法. 既然能够得到父类的这些成员, 也就意味着子类可以访问父类的方法和成员变量(当然, 得到不意味着就可以任意使用, 使用的前提是必须是有相应的访问权限) , 如果子类在使用父类成员的时候, 父类内的成员变量没有
2021-04-27 22:57:39
638
2
原创 this 和 super 为什么要放在构造函数的第一行
看Head First Java 256页 ,书中提到“this()只能用在构造函数中,且它必须是第一行语句!”,不明白原因,查资料发现知乎已经有相关问题,搬运过来做个记录。https://www.zhihu.com/question/47012546/1:在构造函数中,如果你不指定 构造器之间的调用关系 ,那么编译器会给你加上 super()且放在第一行 ; 目的是在初始化当前对象时,先保证了父类对象先初始化 。所以,你指定了构造函数间的调用,那么this()必须在第一行,以保证在执行任何动作前,对
2021-04-27 22:55:43
1330
转载 类的初始化详解
类的初始化详解 类的成分包括成员变量,方法,构造器,代码块,内部类。除此之外,类还可以继承一个父类,这就让类的成分显得十分丰富。这么丰富的成分,如果在类加载的过程中初始化顺序没有严格的规定,就极有可能出现相同类每次初始化值不相等的情况。所以类的初始化一定是有顺序的,那么在类初始化过程中,它们的初始化顺序是怎么样的呢? 先看下面代码:/* 父类 */class SuperClass { /* 静态变量 */ public static String supStaticVariab
2021-04-27 22:45:31
168
原创 JAVA中类中的方法存储在什么地方?
JAVA中类中的方法存储在什么地方类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了…类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象...
2021-04-27 22:01:08
4953
7
原创 子类实例化时候的内存分析
子类实例化时候的内存分析如图,step1: Student s 对应在栈中创建一个指向Student对象的引用sstep2: new Student() 时 在堆中 先创建Student父类的对象,然后在创建Student对象,子类对象Student存在一个super指向父类Person,所以子类对象才可以操作父类(protect 或public)的属性和方法,也可以理解为super就是子类从父类继承下来的那一部分。step3 s.setName(“张三”) Stuent对象s调用setName
2021-04-27 21:40:18
167
原创 静态代码块 构造代码块 构造方法
静态代码块 构造代码块 构造方法public class psv { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); }}class Person{private String name;private int age; /* 构造方法随着着对象的创建而调用 */ public Person() {
2021-04-27 19:25:15
347
原创 static
static如果我们想要改变对象的地址,传统方式我需要调用对象的set方法来重新赋值,如果对象少的时候这样还可以,但是如果对象很多呢?这里我们引入static关键字staci String region;创建静态变量后,我们只需要通过类名调用静态变量赋值即可,无需在针对每个对象赋值,那么这是为什么呢?如图,栈中存放一个指向对象的引用地址,堆中存放着对象,方法区中则存在着我们的静态变量。因为在方法区中,不在堆中,所以无须通过对象来赋值。方法区中的静态变量在类加载的时候就被初始化,先于对象的创建儿产
2021-04-27 11:32:50
54
原创 匿名对象使用时候的一点坑
匿名对象使用时候的一点坑使用匿名对象赋初值时,如果这样赋值会导致如图的结果这是为什么?因为,相当于在堆中为对象开辟了三个空间,每次只对这个空间内的变量赋值,导致调用方法的时候,对象内并没有初始值。...
2021-04-26 20:53:40
94
转载 java中switch 没有break,和default 写在最前面!会发生什么!
java中switch 没有break,和default 写在最前面!会发生什么!点击跳转原文
2021-04-25 14:19:22
511
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人