Java基础---继承
前言: 本篇文章将介绍Java继承的相关内容 关于继承: 简而言之,继承主要解决的问题就是:共性抽取 代码定义: //父类:也称作基类、超类 public class 父类名称 { // ... } //子类:也称作派生类 public class 子类名称 extends 父类名称 { // ... } 最高父类其实就是一个普通类,这点在代码定义时就可以看出来; 在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当做父类看待。(例如:父类是员工,其子类有经理、业务员。那么可以有这样的表达:“经理、业务员是员工”) 在继承关系中: 子类可以拥有父类的“内容” 子类还可以定义除父类之外的专有内容 Java语言是单继承的:一个类的直接父类只能有唯一一个 Java语言可以多级继承: class A {} Class B extends A {} class C extends B {} 一个父类可以拥有很多个子类: class A ...
Java基础---类和对象
前言: 本篇文章将介绍Java类和对象的相关内容 关于面向对象: 传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些过程,就要考虑存储数据的方式(即:算法 + 数据结构 = 程序)。注意在这种设计模式中,算法是第一位的,数据结构是第二位的。但是面向对象程序设计(OOP)调换了这一顺序:将数据放在第一位,然后再考虑操作数据的算法。 面向对象与面向过程的区别: 面向对象程序设计 面向过程程序设计(结构化编程) 定义 面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装 面向过程是“自上而下”的设计语言,先定好框架,再增砖添瓦。通俗点,就是先定好main()函数,然后再逐步实现mian()函数中所要用到的其他方法 特点 封装、继承、多态 算法 + 数据结构 优势 适用于大型复杂系统,方便复用 适用于简单系统,容易理解 劣势 比较抽象、性能比面向过程低 难以应对复杂系统,难以复用,不易维护、不易扩展 对比 易维护、易复用、易扩展,由于面向对象有封 ...
Java基础---方法重载
前言: 本文将介绍Java中方法重载的概念以及使用 方法重载: 概念: 在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数的类型不同即可 特点: 重载的方法与返回值类型无关,只看参数列表,且参数列表必须不同(参数个数或者参数类型)。调用时,根据方法参数列表的不同来区别 示例: 写一个求和类: public class demo { //两个整型数求和 public static void sum(int a,int b){ System.out.println(a+b); } //三个整形数求和 public static void sum(int a,int b,int c){ System.out.println(a+b+c); } //两个浮点数求和 public static int sum(double a,double b){ System.out.print((int) (a+b)) ...
Java基础---数组
前言: 本文将介绍Java数组的创建与使用 数组的概念: 数组是相同类型数据的有序集合。 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们 数组的初始化: 动态初始化: //语法: int[] arr = new int[3]; //可以拆分为两个步骤: int[] arr; arr = new int[3]; 静态初始化: //语法: int[] arr = new int[] {5,15,25}; //可以拆分为两个步骤: int[] arr; arr = new int[] {5,15,25}; //静态初始化时可以简化书写: int[] arrayB = {5,15,25}; 内存分析: 数组的特点: 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的 其元素必须是相同类型,不允许出现混合类型 数组中的元素可以是任何数据类型,包括基本类型和引用类型 数组变量属引用类型,数组也可以看成是对象,数组中的每个元 ...
Java基础---运算符及选择、循环结构
前言: 本文将介绍Java的运算符类型及选择、循环结构相关语法 运算符: 算数运算符: 运算符 描述 +⠀-⠀*⠀/⠀% 加、减、乘、除、取模(两数相除取余数) ++⠀⠀-- – 自增(+1)、自减(-1) ““⠀+⠀”” 连接字符串 比较运算符: 运算符 描述 < 是否小于 > 是否大于 <= 是否小于或等于 >= 是否大于或等于 == 是否相等 != 是否不等 逻辑运算符: 运算符 描述 && 逻辑与,支持短路运算 || 逻辑或,支持短路运算 ! 逻辑非 短路运算:当 false && xxx 或 true || xxx 时,表达式xxx均不会被执行。 位运算符: 运算符 描述 & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 << 按位左移,低位补0 >> 按位右移,高位补符号位0(正数)或1(负数) >>> 按位右移,高位补0 ...
Java基础---基本数据类型
前言: 本文将介绍Java的八大基本数据类型 Java八大基本数据类型: Java基本数据类型 类型 封装器类 描述 byte 整数类型 Byte 1字节,8位,容量:255,数据范围:(-128) ~ (127) short 整数类型 Short 2字节,16位,容量:65536,数据范围:(-32768) ~ (32767) int 整数类型 Integer 4字节,32位,容量:2³²-1,数据范围:(-2³¹) ~ (2³¹-1) long 整数类型 Long 8字节,64位,容量:2⁶⁴-1,数据范围:(-2⁶³) ~ (2⁶³-1) float 浮点类型 Float 4字节,32位,数据范围:(-3.40E38) ~ (+3.40E38) , 赋值时必须在数字后加上f或F double 浮点类型 Double 8字节,64位,数据范围:(-1.79E308) ~ (+1.79E308) , 赋值时可以加d或D也可以不加 char 字符型 Character 2字节,16位,存储Unicode码,用单引号赋值 boolean 布尔型 ...
Android基础之Smali语法
Android基础之Smali语法: 前言: 众所周知,java是一种面向对象的编程语言,一条狗,一部手机,一片树叶都可以是对象,它就像是对现实世界的映射。 Android代码一般是用java编写的,执行java程序一般需要用到java虚拟机,在Android平台上也不例外,但是出于性能上的考虑,并没有使用标准的JVM,而是使用专门的Android虚拟机(使用 C 或 C++ 代码实现,5.0以下为Dalvik,5.0以上为ART)。 Android虚拟机的可执行文件并不是普通的class文件,而是重新整合打包后生成的dex文件。dex文件反编译之后就是Smali代码,Smali实质上就是java字节码,所以说,Smali语言是Android虚拟机的反汇编语言。 为什么要了解Smali: 修改APK运行逻辑: 通过修改Smali代码,再重新编译打包成新的APK,可实现修改APP的运行逻辑,甚至逆向破解。 动态调试APK: 通常静态分析APK是不够的,如果需要彻底分析APK的执行逻辑,需要通过动态调试(常使用smalidea)来进行。 加强理解能力: Smali是介于Android虚 ...
Android基础之apk的组成
Android基础之apk的组成: 前言: 我们知道,生活中常见的手机品牌如华为、小米、三星、魅族、oppo、vivo等等均使用了Android系统(华为的鸿蒙系统也可兼容运行Android应用,苹果手机用的是IOS操作系统,不在讨论范围内)作为基础开发出了自家的ROM(鸿蒙及EMUI、MIUI、Flyme、Color OS、Funtouch OS等),这意味着它们可以运行Android的APP。而作为Android开发者,我们通常需要了解并掌握的便是Android开发需要的语言(java、kotlin)以及Android提供给开发者使用的SDK(Software Development Kit的缩写,译作软件开发工具包)和开发工具Android Studio。 那么一个Android的APP是怎样产生的呢?简单来讲,在APP开发经过需求分析、功能划分后,开发者利用Android Studio编写应用、经过编译构建后便可生成一个可安装调试的debug版apk文件,经过实机(模拟器)测试,修改调试,确认达到了预期目标后再通过正式的签名文件生成release版的apk文件,然后上传到手机 ...