Java从小白到老白学习笔计【一】

命令提示符(cmd)

启动 win + r
切换盘符 盘符名称:
进入文件夹 cd 文件夹名称
进入多级文件夹 cd 文件夹1\文件夹2\文件夹3
返回上一级 cd…
直接回根路径 cd
查看当前内容 dir
清屏 cls
退出 exit

String 首字母大写,不是关键字 加号代表字符串的连接操作
任何数据类型和字符串进行连接的时候,结果都会变成字符串
只有变量才能使用自增自减运算符,常量不可以发生改变,所以不可以
switch 后面的小括号里面只能是下列数据类型:byte short chat int
引用数据类型:String 字符串,enum 枚举

匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束
(穿透case)

方法定义在类当中,不能定义在方法中
return 后面的返回值数据必须和方法的返回值对应
对于一个void没有返回值的方法,不能写后面的返回值,只能写return
最后一行的return可以不写
一个方法中可以有多个return 语句,但同时只能执行一个

方法的重载(overload)
多个方法的名称相同,但是参数列表不同
方法重载与下列因素相关
1.参数个数不同。
2.参数类型不同。
3.参数多类型顺序不同。
与参数名称无关。
与方法返回值类型不同

数组是一种引用数据类型,数组当中的多个数据类型必须统一
数组的长度在程序运行期间不可以改变

初始化方式
1.静态初始化(指定内容)
2.动态初始化(指定内容)
数据类型【】 数组名称 = new 数据类型【数组长度】;
数据类型【】 数组名称 = new 数据类型【】 {元素1,元素2}
静态初始化一旦使用省略格式,就不能拆分成两个步骤

使用动态初始化数组时,其中的元素会自动拥有一个初始值
如果是整数类型,那么默认为0
如果是浮点类型,那么默认为0.0
如果是字符类型,那么默认为’\u0000’
如果是布尔类型,默认为false
如果是引用类型,默认为null

Java的内存需要划分为五个部分
1.栈(stack):存放的都是方法中的局部变量,方法的运行一定要在栈中
局部变量:方法的参数,一或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存中消失
2.堆:凡是new出来的东西,都在堆当中
堆内存里面的东西都有一个地址值:16进制
堆内存中的数据,都有默认值

如果是整数类型,那么默认为0
如果是浮点类型,那么默认为0.0
如果是字符类型,那么默认为’\u0000’
如果是布尔类型,默认为false
如果是引用类型,默认为null

3.方法区:储存.class相关信息,包括方法的信息
4.本地方法栈:与操作系统有关
5.寄存器:与CPU有关

局部变量和成员变量
1.定义的位置不一样
局部变量:在方法内部
成员变量:在方法外部,直接写在类当中
2.作用范围不一样
局部变量:只有在方法中才可以使用,出了方法就不能再用
成员变量:整个类都能使用
3.默认值不一样
局部变量:没有默认值,如果想要使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样

方法的参数就是局部变量
4.内存的位置不一样
局部变量:位于栈内存
成员变量:位于堆内存
5.生命周期不一样
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象的创建而诞生,对着对象被垃圾回收而消失

间接访问private成员变量
必须叫setXxx或者是getXxx命名规则
对于Getter 来说,不能有参数,返回值类型和成员变量对应
对于Setter 来说,不能有返回值,参数类型和成员变量对应

对于基本方法中的boolean值,getter方法一定要写成isXxx

this.成员变量名
通过谁调用的方法,谁就是this

构造方法是专门用来创建对象的方法
通过关键字new来创建对象时,就是在调用方法

格式:Public 类名称(参数类型 参数名称){
方法体
}
注意事项:
1.构造方法的名称必须和所在的类名程完全一样,包括大小写
2.构造方法不要写返回值类型,连void也不写
3.构造方法不能return一个具体的返回值
4.如果没有编写任何构造方法,那么编译器就会默认赠送个构造方法,没有参数,方法体什么也不做
5.一旦编写了至少一个构造方法,那么编译器不再赠送

导包
import 包路径.类名称;
如果需要使用的目标类,和当前类位于同一个包下,则可以导包语句
只有java.lang 包下的内容不需要导包,其他的包都需要import

创建对象的方法
类名称 对象名 = new 类名称();
匿名对象就只是有右面的对象,没有左面的名称和对象名
注意事项:匿名对象只能使用一次,下次使用不得不在创建一次

Random类用来生成随机数字
Random n = new Random();
int num = r.nextInt(); //范围为int的全部范围

(快速写循环:循环次数.for循环单位)
int num = r.nextInt(10);输出的是【0,10)的元素左闭右开

根据int变量n的值,来获取随机数字,范围是[1,n],两边都可取,可以在外面加一

ArrayList集合的长度可以改变
对于ArrayList 来说,有一个尖括号代表泛型
也就是说装在里面的元素,全都是一个类型
泛型只能是引用类型i,不能是基本类型
ArrayList = new ArrayList();

注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容
如果内容为空,得到的是空的中括号:[]
向集合中添加数据:list.add("");

public boolean add(E e);向集合中添加元素,参数类型和泛型一致,返回值代表是否添加成功
public E get (int index);从集合中获取元素,参数是索引编号,返回值就是对应位置的元素
public E remove(int index);从集合中删除元素
public int size();获取集合的尺寸长度,返回值是集合所包含的元素个数

获取元素list.get();
删除元素list.remove();

如果希望向集合ArrayList当中储存基本类型数据,必须使用基本类型对应的包装类。
基本类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

字符串的特点
1.字符串的内容永不可变。
2.正是因为字符串不可改变,所以字符串是共享的
3.字符串效果上相当于是char[]字符数组,实际上底层原理是byte[]字节数组

字符串常量池:程序当中直接写上的双引号的字符串,就在字符串常量池
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==是进行【地址值】的比较

双引号直接写的字符串在常量池当中,new的不在池当中。

对字符串内容进行比较
public boolean equals(Object obj);
参数可以是任何对象,只有参数是一个字符串,并且内容相同时,返回ture’否则返回false

public int length();获取字符串当中所含的字符个数,拿到字符串长度
public char concat(String str);将当前字符串和参数字符串拼接成为返回值新的字符串
public char charAt(int index);获取指定位置的单个字符。(索引从零开始)
public int indexOf(String str);查找参数字符串在字符串中首次出现的索引位置,如果没有返回-1

字符串的截取方法:
public String substring(int index)截取从参数位置开始一直到末尾,返回新字符
oublic String substring(int begin , int end) [begen,end)包含左面,不包含右面。

public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值
public byte[] getBytes():获得当前字符串底层的字节数组
public String replace(CharSequence oldString, CharSequence newString ):将所有出现的老字符串替换为新的字符串,返回替换后获得新字符串。

String str1 = str1.replace(“o”,“0”)

分割字符串:
public String[] split( String regex);按照参数的规则,将字符串切成若干部分

String str1 = “aaa,bbb,vvv”
String[] array1 = str1.split(",");

split是正则表达式
如果按照英文句点“.”进行切分,必须写成"\."(两个反斜杠)

static的概述
只在本类中保存一份,所有的对象共享一份
一旦用了static关键字
这样的内容就不属于对象自己,而是属于类
所以凡是本类的对象,都共享同一份

使用static修饰的方法,叫静态方法,不属于对象,属于类

对于静态方法来说,可以通过对象名进行调用,也可以直接调用类名称
静态变量:类名称.静态变量
静态方法:类名称.静态方法()

1.静态不能访问非静态
原因:因为在内存中是现有的静态内容,后有的非静态内容
先人不知道后人,但后人知道先人
2.静态方法中不能使用this
this 代表当前对象,通过谁调用的方法谁就是当前对象。

根据类名称访问静态成员变量的时候,全程和对象没关系,只和类有关系

静态代码块
public class Person{
static{
//静态代码块内容
}
}
特点:当第一次用到本类时,静态代码块执行唯一的一次
静态内容总是优于非静态,所以静态代码块比构造方法先执行

静态代码块的用途:
用来一次性地对静态成员变量进行赋值

public static String toString 将参数数组变成字符串

public static void sort 按照默认升序对数组元素进行排序

数学类
public static double abs(double num);获取绝对值
public static double ceil(double num);向上取整
public static double floor(double num);向下取整
public static long round(double num);四舍五入

在继承的关系中,子类就是一个父类
public class 子类名称 extends 父类名称(
在父子类的继承中,如果成员变量重名,则常见子类对像时,访问有两种

直接通过子类对象访问成员变量;
等号左边是谁,就优先用谁,没有则向上找。
间接通过成员方法访问成员变量;
该方法属于谁,就优先用谁,没有才向上找

在父子类的继承关系中,创建子类对象,访问成员的柜子:
创建的对象是谁,就优先用谁,如果没有则向上找
无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类

重写(方法的覆盖)
在继承关系中,方法的名称一样,参数列表也一样
重载
方法的名称一样,参数列表不一样
特点:创建的是子类对象,则优先用子类的方法

方法覆盖重写的注意事项:
1.必须保证父子类的方法名称相同,参数列表也相同
@Overrude:写在方法的前面,用来检测是不是有效的正确覆盖重写
2.子类方法的返回值必须小于等于父类方法的返回值范围
3.子类方法的权限必须大于等于父类的权限修饰符
public > protected > (default) >private
(default)不是关键字,而是什么都不写

继承关系中,父子类构造方法的访问条件:
1.子类构造方法当中有一个默认隐含的“super()”构造,所以一定是先调用的父类构造,然后执行子类构造

2.子类构造可以通过super关键字来调用父类重载构造

3.super的父类构造调用,必须是子类的构造方法的第一个语句
不能一个子类构造调用多次super构造

总结:
子类必须调用父类的构造方法,不写则赠送super();写了则用写的指定的super调用,super只能有一个,还必须是第一个

this用来访问本类内容
1.在本类成员方法中,访问本类的成员变量
2.在本类的成员方法中,访问本类的另一个成员方法
3.在本类的构造方法中,访问本类的另一个构造方法
在第三种用法中注意:
1.this调用也必须是构造方法中唯一一个,也是第一个
2.super和this两种构造方法,不能同时使用

Java语言是单继承的
一个类的直接父类只能有一个。
Java可以多级继承
一个子类的直接父类是唯一的
但是一个父类可以拥有很多子类

热门文章

暂无图片
编程学习 ·

Linux 练习 - 文本处理三剑客之AWK

1、文件 ip_list.txt 如下格式,请提取 ”.solin.com” 前面的主机名部分并写入到回到该文件中 1 blog.solin.com 2 www.solin.com … 999 study.solin.com [root@centos7 ~]# awk -F "[ .]" {print $2} ip_list.txt >> ip_list.txt2、统计 /etc/fstab 文件中每…
暂无图片
编程学习 ·

leetcode-341-扁平化嵌套列表迭代器-java

题目及测试package pid341; /* 扁平化嵌套列表迭代器给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。示例 1:输入: [[1,1],2,[1,1]] 输出: […
暂无图片
编程学习 ·

8080端口被占怎么办 ,解决方法

用后端springboot启动,8080端口 报错 8080 in use 打开 控制台 win+R 输入 cmd 进入后输入netstat -ano 肉眼能找到找就完事了如果找不到 输入netstat -aon|findstr “8080”找到最后一列的那个数字 “26252”, 就是PID 码 然后打开系统的 任务管理器 ,你要是任务管理器都不…
暂无图片
编程学习 ·

springboot应用启动流程分析,嵌入式tomcat

之前我们分析了下springboot自动装载的原理,现在我们看看springboot应用启动的流程: 一般调用如下: // 应用代码SpringApplication.run(MiddlewareApplication.class, args); // SpringApplication.javapublic static ConfigurableApplicationContext run(Class<?> p…
暂无图片
编程学习 ·

qqwwee/keras-yolo3 多gpu训练问题

qqwweee/keras-yolo3模型默认采用的是一块GPU,在直接使用model = multi_gpu_model(model,gpus=N)时,模型会报错tensorflow.python.framework.errors_impl.InvalidArgumentError: Can’t concatenate scalars (use tf.stack instead) for ‘yolo_loss_1/concat’ (op: ‘Conca…
暂无图片
编程学习 ·

C#判断端口是否被占用

public static bool PortInUse(int port){bool inUse = false;IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();//IP端口foreach (IPEndPoint endPoint in ipEndPoints){if (…
暂无图片
编程学习 ·

用自行实现的优先队列进行四字成语汉字频率统计

文章目录背景构建最大堆代码实现测试通过最大堆实现优先队列成语汉字频率统计案例统计四字成语文件中的汉字出现频率的前5位项目结构汉字频率的类优先队列测试类成语汉字统计主程序 背景 在《自已做动画及编写程序搞清楚最大堆的实现原理》这篇文章中,我们通过动图分析编 码自…
暂无图片
编程学习 ·

SpringMVC框架的详细操作步骤和注解的用法

springMVC操作步骤: 第一步:导入jar(spring4个核心+日志+spring-web+spring-webmvc+spring-aop) 第二步:在web.xml中配置前端控制器(servlet),并读取springmvc的资源文件springmvc.xml<servlet><servlet-name>springDispatcherServlet</servlet-name><ser…
暂无图片
编程学习 ·

Dota 四五号位(辅助)理解

两个辅助打团等于3打5?我怕你是没经历东血魔北迪法南幻刺西巨魔中火枪的年代。你看这阵容是不是5大哥,咋不扎实?要输出有输出,要gank有gank,一个个还灵活得一批。dota发展到如今这个程度,辅助真的是越老越吃香,比如国土比如毛毛鸭比如爱沙尼亚拳王等等。他们的年龄很难做…
暂无图片
编程学习 ·

移动端如何使用fidder代理访问测试

1. 保证自己本地电脑能访问测试环境(配置host),如图2. 电脑安装fiddeer:https://blog.csdn.net/BGONE/article/details/93007613 3. 修改fidder配置 菜单Tools—Options—Connections,如图1点击allow remote conputers to connect->OK4. 手机配置代理(亲测安卓、IOS都可…
暂无图片
编程学习 ·

FIF智慧教学平台使用电脑获取手机相册教程

需要准备工具如下:手机一部 电脑一台 数据线一根1.手机连接电脑 首先用数据线将手机和电脑连在一起,然后你会发现你的手机出现了这样一个东西(博主用的是魅族手机,其余手机与之类似):然后点击这个东西进入下面的页面,选择文件传输:这样手机连接电脑的操作就完成了。 2.…
暂无图片
编程学习 ·

必应每日壁纸——7月

只分享,不科普 自行必应科普July1 Wednesday2 Thursday3 Friday4 Saturday5 Sunday6 Monday7 Tuesday8 Wednesday9 Thursday10 Friday11 Saturday12 Sunday July 1 Wednesday 班夫国家公园 莫兰湖德国卡塞尔威廉高地公园中的阿波罗神庙2 Thursday 3 Friday 4 Saturday 5 Sunda…
暂无图片
编程学习 ·

今天开始看apue了

第一个问题是安装apue.h 1 源码 2 安装libbsd-dev 3 解压后进入apue.3e目录下执行make 4 复制include下的apue.h和lib下的error.c到 /usr/include/中 5 在apue.h中加入#include “error.c” 应该就OK了!!!
暂无图片
编程学习 ·

Tomcat 启动控制台乱码

Tomca 启动控制台乱码将tomcat用作web应用服务器,在tomcat的服务迭代中,服务漏洞是不可避免需要升级的来修复漏洞的。在修复漏洞的时候通常需要将原来的webapps下的文件复制到新tomcat中,并替换tomcat/conf/server.xml文件(小版本升级都可以用这种方式)。解决乱码 在tomca…
暂无图片
编程学习 ·

【译】理解C++中的 nullptr

原文链接🔗 Understanding nullptr in C++译者注:nullptr 是 C++11 为了解决NULL的歧义问题而引入的新特性,表示空指针常量. 原文作者是 Utkarsh Trivedi,发布网站是GeeksforGeeks.考虑下面的C++程序,它暴露了一些NULL的问题 // C++ program to demonstrate problem with N…
暂无图片
编程学习 ·

【小甲鱼】零基础入门学习Python(二)函数

function.__doc__function(a = x, b = y) 关键字参数def function(a = x, b = y): 默认值参数def function(*params) 收集参数,可输入多个参数打包为元组函数无return时返回Nonegloble 将局部变量转化为全局变量闭包def FunX(x):def FunY(y):return x * yreturn FunYFunX(8)(5…
暂无图片
编程学习 ·

CentOS系统Docker搭建MySQL服务(解决Docker MySQL无法输入中文问题)

MySQLMySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。 MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。Docker 搭建MySQL服务…