随笔——重温Java基础语法

Colmap中 patchmatch源码 惊世骇俗的Colmap PatchMatch源码 500多行,简明易懂 先了解PatchMatch的options: max_image_size: 任一维度的最大图像尺寸 gpu_index: gpu的下标 depth_min,depth_max: 随机采样的深度范围 window_radius:用于计算NCC(两图片的归一化互相关),NCC的计算需要用到 win_size. 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解 - 知乎 (zhihu.com) window_step: 用. 阅读详情

在这里插入图片描述

温故而知新

  • JVM、JRE、JDK
  • 创建项目,模块,包和类
  • 基本数据类型boolean、byte、short、char、int、long、float、double
  • 异或运算符,相同则假
true ^ false (结果为true)
true ^ true (结果为false)
  • 三目运算符:a > b ? a+1 : 666

  • Java 数组的本质

int[] arr = new int[]{1, 6, 2, 8};
int[] arr = {1, 6, 2, 8};
类比
String str = new String("张三");
String str = "张三";

Java中的数组其实是一个对象,但是确实是一个特殊的对象,实在是太特殊了,以致我们都不好把它多做对象处理。

java对数组对象化的操作的支持是指令级的,也就是说java虚拟机有专门针对数组的指令。数组的Class类实例是java虚拟机动态创建动态加载的,其结构与普通java类的Class实例有一些不同。
  • Python 的函数是支持默认参数的,而 Java 的方法是不支持默认参数的,但是 Java 可以通过重载方法实现类似的功能。
重载方法:看入不看出(即:只看方法的入口,不看方法的出口。方法的入口指的是"方法名称,参数列表";方法的出口指的是”返回值“;修饰符就更加无关紧要了)
  • Java 类的属性和方法访问权限
不写修饰符,访问权限默认是 不填 级别,即同一空间环境下类之间可以互相访问(类的同一空间环境指的是"在同一个包下")
不填 级别处于中间位置,前可攻,退可守;
当它前进一步时,即使用public或protected修饰符,可扩大访问权限。
当它后退一步时,即使用private修饰符,可缩小访问权限。
  • 静态代码块
static {
	...
}

// 特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次
  • 实例代码块
{
	...
}

// 特点:每次创建对象时,执行实例代码块,并在构造器之前执行
  • Java 不支持多继承,而 Python 支持多继承
  • Object类是java所有类的祖宗类
  • 输出对象时,默认会调用toString()方法
  • 在执行子类的构造器时,子类的全部构造器,都会先调用父类的构造器,再执行自己的构造器(默认第一行就是super())
  • 兄弟构造器
public class Student{
	private String name;
	private int age;
	private String schoolName;
	
	
	public Student(String name, int age){
		this(name, age, "野鸡学校");	// 调用兄弟构造器
	}
	
	public Student(String name, int age, String schoolName){
		this.name = name;
		this.age = age;
		this.schoolName = schoolName;
	}
}
  • 多态存在的问题:无法直接调用子类独有的功能,需要借助类型转换才能实现

  • 在类中,如果需要类型转换,建议使用 instanceof 关键字,判断当前对象的真实类型,再进行强转。

  • 抽象类可以像普通类一样,写很多东西。

  • Jdk8之前 接口 只能在里面写"常量"和"抽象方法",接口比抽象类更抽象(即:更严格)

public interface A {
	// 成员变量(自动变成常量)
	String NAME = "Jack";
	
	// 成员方法(自动变成抽象方法)
	void test();
}
  • jdk8之后 接口 新增方法
public interface A {
	// 1.默认方法
	// 必须使用default修饰,默认会被public修饰
	// 可以写方法体
	// 必须使用实现类所创建的对象进行访问
	default void test1(){
		System.out.println("==默认方法==");
	}
	
	// 2.私有方法
	// 必须使用private修饰(jdk9开始支持)
	// 必须在接口里面进行访问,比如默认方法里面可以调用
	private void test2(){
		System.out.println("==私有方法==");
	}
	
	// 3.静态方法
	// 必须使用static修饰,默认会被public修饰
	// 直接通过   接口名.方法名   进行访问
	static void test3(){
		System.out.println("==静态方法==");
	}
	
}
  • 接口 可以多继承
interface A {}
interface B {}
interface C {}

// 接口是多继承的
interface D extends C, B, A {
	
}

// 接口多继承的意义
// class People implements C, B, A {}
// 上面的代码可直接写成下面的代码
class People implements D {}
  • 抽象方法和接口都可以使用匿名内部类语法

  • 如果匿名内部类满足一定条件,可以简化成 lambda 表达式

  • 适当使用枚举,去约束输入的内容

  • 学习集合

    • Collection 接口

      • List 接口
        • ArrayList 实现类
        • LinkedList 实现类
      • Set 接口
        • HashSet 实现类(底层原理是 HashMap )
        • LinkedHashSet 实现类(底层原理是 LinkedHashMap )
        • TreeSet 实现类(底层原理是 TreeMap )
    • Map 接口

      • HashMap 实现类
      • LinkedHashMap 实现类
      • TreeMap 实现类
    • 集合 stream 化

  • 可变参数

int func(int age, int... nums){
	// 只能有一个可变参数
	// 可变参数要放到最后
	// 可变参数本质就是数组
}

func(10)				// 可变参数没有数据
func(10, 20, 30, 40);	// 可变参数数据为:20,30,40
func(10, new int[]{20,30,40})
  • IO 流
  • 字节流(操作图片、视频、文件)
    • InputStream 抽象类
      • FileInputStream 具体类
      • 其他具体类
    • OutputStream 抽象类
      • FileOutputStream 具体类
      • 其他具体类
  • 字符流(操作文本文件、Java文件)
    • Reader 抽象类
      • FileReader 具体类
      • 其他具体类
    • Writer 抽象类
      • FileWriter 具体类
      • 其他具体类
  • 日志技术
  • JCL 接口(Jakarta Commons Logging)
    • JUL 实现框架(java.util.logging)
  • slf4j 接口(simple logging facade for java)
    • Log4j 实现框架
    • Logback 实现框架
  • 多线程
  • 通过CAS算法(Compare And Swap)实现乐观锁。其本质通过消耗计算资源,去实现"无锁数据结构",进而减少锁带来的开销。
  • CAS算法基本原理:CAS算法包含三个操作数——内存位置(V),预期值(A)和新值(B)。如果内存位置的值与预期值相匹配,就将内存位置的值修改为新值。这个操作是原子的,即不可中断。
  • Junit单元测试框架,通过一些配置和写一些测试方法,能够非常方便的对方法进行测试。既能局部测试,又能全局测试。
  • 反射
  • 通过反射,可以动态操作已经定义好的类,获取类的属性和方法,进行进一步操作
  • 反射非常强大,能够破环类的封装性,为所欲为
  • 使用反射技术,可能代码稍微复杂,但是能够对代码进行反向的控制,通常利用它来制作框架。
  • 注解
    • 使用 JD-GUI 反编译工具,对注解代码进行反编译,进而认识注解的本质是接口
    • 元注解是用来帮助我们更好的实现自定义的注解
    • 通过反射技术,解析注解,从而获取某些信息
k230+CanMV+micropython环境下byte、int、hex、string之间的转换常用函数实测 【代码】k230+CanMV+micropython环境下byte、int、hex、string之间的转换常用函数实测。 阅读详情

相关推荐

FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译

FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译 什么是Firmament? Firmament (FMT) 是一款基于模型设计 (Model-Based-Design, MBD) 的开源自驾仪,可被用来快速构建无人机,无人车,无人船,机器人等平台的控制系统。 系统主要由两部分构成. FMT-Firmware: 一个基于C/C++开发的稳定、高性能的嵌入式系统. FMT-Model: 一个基于MATLAB/Simulink开发的仿真框架以及算法库. 昨天得知FMT开源飞控项目已经开

weixin_45786595的博客 2870

在java web开发中 ,${ }是什么意思?

是EL表达式,表示你从另外一个页面传过来的参数的值,比如你从另外一个页面传了一个name为name,value为value的参数,在本页面写${name }就会显示value,不过这是要在j2ee 5.0的环境下才有,因为j2ee5.0自带el和jstl标签库,而其他则要导入jar包了。 EL表达式,它会从page,request,session,application中取值。比如:在request中setAttribute(“name”,“测试”),那么${name} 就会得到值为测试。 <%=re

爱喝星冰乐的博客 5752

Ubuntu 20.04 系统备份和还原

最近大家Ubuntu开发环境,经常出现搭着搭着系统就挂了,于是开始琢磨了Ubuntu系统的备份和还原,以备不时之需,Linux环境搭建实在是有点太细,好多情况下,就算曾经搭建过一遍,再次搭建有些包还是忘了安装,做好备份是十分必要的。 经过了一番研究,Ubuntu备份有很多方式:根目录tar、dd、Systemback(1.0版本已经不维护了,2.0版本收费)等等,最终决定使用 —— Timesift, 因为方便一些。 文章参考:小马虎的救星——Timeshift Timeshift Timeshift,是L

Z_Paper的博客 2万+

java中$_java中字符串参数化符号${}的解析

前言我们在很多地方都能看到代表参数意义的符号${},可能我们在写一些框架的时候,有时候也需要用到这个符号,但他们是如何精确解析的?或者说需要我们自已写的时候,如何写?我们先来看以下的几个场景:1.字符串"a${a}a"2.字符串"a\${a}a"3.字符串"a${a\}a"4.字符串"a${a\}a}a"5.字符串"a${a}a${"6.字符串"a${a}a${a}"以上几个字符串中,基本上包括了...

weixin_32534669的博客 1734

爆改YOLOv8 | PSA注意力机制融合入YOLOv8

yolov8,PSA注意力,即插即用

weixin_43986124的博客 2497

五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器

本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分五个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二: 一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EKF)开发实践之三: 基于三个传感器的海拔高度数据融合 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解 五.卡尔曼滤波器(EKF)开发实践之五: 编写自己的EKF替换robot_pose_ekf中EKF滤波器 也就是本文 ...

okgwf的博客 4136

java %1$t_Java泛型占位符中的<T>和<?>有哪些区别?

Java泛型中占位符和>有哪些区别?这是问题问得很好,有的人可能弄不清楚Java泛型的T与?的区别,所以我们这里简单的演示一下,相信大家一定能弄清楚的!先上两段代码:publicstaticvoidshow1(Listlist){for(Objectobject:list){System.out.println(object.toString());}}publicst...

weixin_42365334的博客 663

Unity URP项目里Post Processing死活没效果?别急,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果不显示的5个常见问题及解决方案,包括管线配置、Volume设置、摄像机选项、Layer冲突和Shader兼容性。通过专业排查步骤和实用代码片段,帮助开发者快速定位并修复后处理效果失效问题,提升项目开发效率。

weixin_28693309的博客 233

java 中的$_在Java中使用正则表达式进行后向引用($1,$2...)

2012-04-25 — Yanbin自 JDK1.4 引入正则表达式的支持可称得上是次大改变,可 Java 的正则表达式的能力还是很弱,别说和 Perl 比了,就是和 C# 和 JavaScript 的正则表达式比较来也逊色不少,不过现在 JVM 上有其他语言对正则表达式有所增强,像 Groovy, jRuby 和 Scala。[修正一下] 第一句话的说法是有误的,其实 JDK 本身的正则表达式...

weixin_29608291的博客 1530

Mac版 Android Studio自带模拟器无法联网解决方案

前言 作为一枚安卓开发者,免不了使用模拟器来开发调试(毕竟它比手机方便太多)。但是因为适配需要,我们会更多的使用真机开发调试,那么当模拟器遇到这样那样的问题,我们往往会无从下手,其中最烦的就是网络问题。 我最近图方便,又重新用起了模拟器,但是发现联网失败,用模拟器内置的浏览器也打不开网页,于是百度上一通找,毫无效果,各种说用cmd命令行设置模拟器dns的都没用,显示没有什么dns文件啥的,后来...

陈万洲的专栏 1万+

中兴交换机如何配置?有哪些常用的配置命令,本文值得收藏!

中兴交换机是一种常见的网络设备,用于构建和管理企业网络。它提供了丰富的功能和灵活的配置选项,使网络管理员能够根据特定需求进行定制化配置。本文将详细介绍中兴交换机的配置过程,包括登录、基本设置、VLAN配置、接口配置和安全配置等内容。

网络技术联盟站 1万+

Java重温笔记--Java 基础语法

Java 线程创建方法 线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建 使用型够为Thread(Runnable)的构造子类将一个实现了Runnable接口的对象包装成一个线程 从Thread类派生出子类并重写run方法 Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作 对象:对象是类的一个实例,有状态和行为。 类:...

凌晨5点去爬山 365

SXU—软件测试方法和技术-朱少民-第三部分 软件测试方法大题汇总-附考点和相关习题及解答

软件测试方法和技术-朱少民-第三部分 软件测试方法—-最少测试用例个数,强一般弱一般强健壮、边界值分析、ns流程图、白盒逻辑覆盖代码、等价类划分,逻辑组合(条件)覆盖,计算圈复杂度等—附考点和相关习题及解答

weixin_63597914的博客 2211

重温java基础

1.基本语法: java 对大小写敏感 类名:首字母应该大写,多个单词首字母要大写 方法名:所有的方法名都应该以小写字母开头。如多个单词,则后面的每个单词首字母大写。 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。 主方法入口:所有的Java 程序由public ...

qq_39178473的博客 249

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

重温Java基础(终章):汇总篇

从事Java开发工作已近十年,从最初的懵懵懂懂,到现在的“不知所措”。随着知道的越多,不知道的也越多。但不管技术怎么发展,始终离不开基础知识。所以,近段时间开始,将重温Java技术的基础知识,主版本为Java8,中间可能也会穿插一些其它版本,如Java7。谨以此系列文章,来记录重温Java基础的历程。 为啥费劲写这些文章?和写SpringCloud进阶之路时一样,一是为了巩固自己所学的知识,写下...

银河架构师的博客 511

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JAVA基础重温

java基础。 java工作原理。 java核心机制。 java基础重温。java字面量 Break。continue 为何Java字符采用Unicode编码,而不是常规的ASCII码?

FourSeasonSunshine的博客 1412

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

重温Java基础——基础语法中几个有意思的地方

1.long与float的双标对待 声明long型常量须后加“l"或“L”,但是在使用的时候有的时候可以不加 声明float型常量须后加“f"或“F”,使用的时候必须加 给long赋值一个较小的值不加L,可以运行 System.out.println("1.long与float"); long l1=1234; System.out.println(l1); 给long赋值一个较大的值不加L,不可以运行 long l2=123456789012345; System.out.pr

qq_44025396的博客 855

重温Java基础(一)

1.Java的三个重要特点:跨平台,面向对象,开源。 2.Java的重要机制:Java虚拟机(JVM),垃圾回收 JVM简介: 图一: javac命令:将Java源文件编译成字节码文件, java 命令:JVM解释执行已经编译好的字节码文件。 图二: 垃圾回收:jvm自动进行垃圾回收(省) 3.Java中的大小写,类名大写并且和文件名一致,Java严格区分大小写。 4...

无名小卒菜的博客 260

重温基础之路:JAVA的11个基础特性

重温JAVA之路上班接近四年,一些基础知识已经生疏,在阅读《JAVA核心技术》一书,用此博客记录阅读心得: 简单性 面向对象 分布式 健壮性 安全性 体系结构中立 可移植性 解释型 高性能 多线程 动态性 简单性 JAVA的语法相当于C++语法的纯净版,C++中的指针、头文件、结构、联合等JAVA都没有采用,当然,也没有将所有的C++语法特性都清除,例如switch语句的语法在JAVA中就没有改变

Easy的博客 425

【Java编程】JavaSE基础总结(一):语法基础

本文是关于 JavaSE 的一个全面总结,很多细节方面并不会去关注。因为笔者大学时学的 Java,研究生阶段因专业原因转的 Python,现在又因工作需要重用 Java,真是兜兜转转又回到了从前 😂。

Data · Model · Agent · Repeat 599

Java面向对象重温【多态】

Java重温之多态 概念:父类的引用指向子类的实例,此语法现象即为"多态". 语法:父类类型 对象 = new 子类实例. 如:Pet pet = new PetDog(); 特点: 多态,直白而已,就是“多种状态”,对象有两种或者两以上的状态,既属于父类类型,也属于具体的子类型。 父类的引用只能调用父类中声名过的方法;不能调用子类中特有的方法。 自动类型转换:父类的引用指向子类的实例,会自动将子类实例提升成父类类型,然后赋值给左侧的父类的引用变量 语法:父类类型 对象 = new 子类实例 强制类

CNR233的博客 214

【Java】Java编程问题top100---基础语法系列(一)

Java编程问题top100---基础语法系列一

橘足轻重的博客 997

重温java基础(转载)

Java,编译型语言,解释型语言? 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 把高级语言翻译成机器语言的两种方式:一种是编译,一种是解释。 编译型语言 编译型语言执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重

Nathan_f的博客 424

重温java 系列一 Java基础

通过JDK的Api,我们会看到java.lang.Thread 类型提供了一系列的方法,如start(),stop(),resume(),suspend(),destory()等方法来管理线程。Thread.stop()方法可以强制中止线程的执行,然而,这种方法是不安全的,因为他不能保证线程资源的正确释放和清理,可能导致数据不一致和资源泄露等问题,因此该方法已被官方弃用。虽然stop()方法确实可以停止一个正在运行的线程,但是这个方法 是不安全的,而且该方法已被弃用,最好不要使用它。

随时分享高质量技术文章 936

重温基础,JAVA的基础数据类型

重温基础,JAVA的基础数据类型上班接近四年,一些基础知识已经生疏,在阅读《JAVA核心技术》一书,用此博客记录阅读心得: 整形(int、short、long、byte) 浮点类型(float、double) char类型 字符串(String) boolean类型 变量 常量 数据转换 API 整形(int、short、long、byte) - 整形用于标识没有小数部分的数值,允许是负值。int

Easy的博客 320

重温Java - Java基础二

同时应便面过度捕获异常和不处理异常导致的问题,以及使用异常代理正常的流程控制的做法。Metaspace不在虚拟机内存中,而是使用本地内存也就是在JDK8的ClassMetadata ,也被存储在叫做Metaspace的Native memory。很多时候,execl一次性到处大量的数据,获取在程序中一次性查询的数据太多,都可能出现这种OOM的问题。如果实际工作中出现了这个问题,一般是由于创建的线程太多了,或者设置的单个线程占用的内存空间太大导致的。堆内存OOM 是最常见的OOM了。

随时分享高质量技术文章 855
上一篇: SQL语句 (MySQL)
下一篇: 走进Java中的class文件
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值