- 博客(42)
- 收藏
- 关注
原创 Android误删代码、误删文件解决方法
Android误删代码、误删文件解决方法1. 误删代码右击代码缺失的类,Local History -> show History ,再右击Revert,就可以将误删的代码恢复了。2.误删类或者包同样的方法,就可以恢复到以前的样子了。...
2022-03-30 12:19:56
4586
原创 handler机制
handler机制主线程中不能存在耗时操作,所有主线程会将耗时操作分配给子线程可以通过handler来实现主线程和子线程的通信在xml文件中进行布局一个textview和button<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.
2022-02-23 14:51:51
112
原创 Android系统的消息处理机制
Android系统的消息处理机制handler 、 message 、messagequeue、looperMessage (消息):线程间通信的消息单元MessageQueue(消息队列):存放Message库Handler(消息处理者): 有将消息放入消息队列的功能Looper(循环者):不间断的检查消息队列有无消息,并提交给handler处理主线程:每个线程中有一个looper和messagequeue...
2022-02-23 14:49:15
1400
原创 android四大组件之activity
android四大组件之activityactivity生命周期onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy点击运行onCreate -> onStart -> onResuem点击home键onPause -> onStop再回到activity1界面onRestart -> onStart -> onResume点返回键onPause
2022-02-23 14:47:12
1759
原创 安卓系统启动流程和系统架构
安卓系统启动流程引导芯片加载bootloader装载linux内核 启动安卓系统查找一个init.rc,初始化文件,创建一些文件夹和目录启动zygote程序,相当于一个孵化器,创建java虚拟机、JNI的注册、启动systemserver,系统服务,启动binder线程池,相继启动其他的服务 activityManageServer、powerManageServer、启动homeActivity主界面安卓系统架构linux内核层 硬件层 连接硬件驱动HAL层 硬件层
2022-02-17 11:07:52
134
原创 四大组件之service
service启动模式startService生命周期为 onCreate -> on startCommand -> onDestroystartService这种启动方式一般不会随着程序停止而停止在点击事件中调用startService启动service再通过点击事件调用stopService停止servicebindService生命周期为 onCreate -> onbind -> onUnbind -> onDestroy调用
2022-02-14 17:16:05
108
原创 git分支
git分支查看分支git branch新建一个分支,但依然停留在当前分支git branch dev // 新建一个dev分支切换到该分支git checkout dev新建一个分支,并进入该分支git checkout -b stu //新建一个stu并进入stu分支将dev分支的工作成果合并到master分支上 ,merge合并指定分支到当前分支git merge dev删除dev分支git branch -d dev新版本切换分支git switch de
2022-02-11 17:53:41
82
原创 git从下载到远程推送
git去git官网下载Git (git-scm.com)然后安装无脑下一步,安装完成在一个文件夹下点击鼠标右键git bash here在本地配置userName 和userEmailgit config --global user.name "yeqianfeng"git config --global user.email "2690380103@qq.com" 可以在c:/用户/LENOVO 文件夹中查看 .gitconfig文件生成连接远程仓库的公
2022-02-11 15:09:57
149
原创 viewpager2
viewpager2在mainactivity的xml文件中添加一个viewpager2的控件<androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPaper" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/purp
2022-02-09 14:39:16
173
原创 fragment生命周期
fragment生命周期onAttach \ onCreate \ onCreateView \ onActivityCreate \onstart \ onResume \ onPause \ onStop \onDestroyView \ onDestroy \ onDettach打开fragment界面onCreate()–> onCreateView () --> onActivityCreate() --> onSta
2022-02-09 14:38:41
91
原创 fragment和activity的通信
fragment和activity的通信通过bundle通信activity Bundle bundle = new Bundle(); bundle.putString("content","fragment与activity的通信"); BlankFragment1 blankFragment1 = new BlankFragment1(); blankFragment1.setArguments(b
2022-02-08 11:34:41
109
原创 fragment动态添加与管理
fragment动态添加与管理步骤创建一个待处理的fragment获取FragmentManager,一般都是通过getSupportManager()开启一个事务transaction,一般调用fragmentManager的beginTransaction()使用transaction进行fragment的替换提交事务 .commit();package com.example.fragmentmanage;import androidx.appcompat.app.AppCo
2022-02-08 11:34:19
242
原创 fragment使用方法
fragment使用方法创建一个fragment类import android.os.Bundle;import androidx.fragment.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.TextView;pu
2022-02-08 09:30:44
119
原创 回顾方法及加深
·回顾方法及加深方法的定义修饰符返回类型break:跳出switch,结束循环和return的区别方法名:驼峰命名,见名知意参数列表:(参数类型,参数名)异常抛出方法的调用静态方法非静态方法形参和实参值传递和引用传递public class Demo02 { //静态方法 有static //非静态方法 没有static public static void main(String[] args) { // 实列化这个
2021-05-24 17:27:55
82
原创 ## 面向对象&面向对象
面向对象&面向对象面向过程思想步骤清晰简单,,第一步做什么,第二步做什么。。。。面向过程处理一些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题,适合处理需要多人协作的问题。对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路啦分析整个系统。但是具体到微观操作,仍然需要面向过程的思路去处理。什
2021-05-24 16:53:19
48
原创 数组的四个基本特点
数组的四个基本特点其长度是确定的。数组一旦被被创建,它的大小就是不可以改变的。其元素必须是相同类型,不允许出现混合类型。数组中的元素可以是任何数据类型,包括基本类型和引用类型数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,java中对象是再堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身就是在堆中的。数组的边界下标的合法区间:[0,length-1],如果越界就会报错;public static voi
2021-04-18 13:55:05
1978
原创 数组三种初始化
数组三种初始化静态初始化int[] a = {1,2,3};Man[] men = {new Man(1,2), new Man (2,2)};动态初始化int[] a = new int[2];a[0]=1;a[1]=2;数组的默认初始化 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。相关代码public class Demo02 { public static void
2021-04-18 13:10:41
237
原创 数组的声明创建
数组的声明创建首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:dataType[] arrayRefVar; // 首选的方法或dataType[] arrayRrfVar[]; // 效果相同,但不是首选方法java语言使用new操作符来创建数组,语法如下:dataType[] arrayRefVar = new dataType[arraySize];数组的元素是通过索引访问的,数组索引从0开始。获取数组长度: arrays.length代码
2021-04-17 13:51:01
116
原创 递归
递归A方法调用B方,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可描述出解题过程所需的多次重复计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。递归体:什么时候需要调用自身方法。public class D
2021-04-17 13:03:36
139
原创 可变参数
可变参数Java支持传递同类型的可变参数给一个方法。在方法声明中,在指定参数类型后加一个省略号(…)。一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通 的参数必须在它之前声明。public static void printMax(double...numbers){ if (numbers.length == 0){ System.out.println("NO argument passed"); } double result = numbe
2021-04-17 13:02:14
84
原创 ## 方法的重载
方法的重载重载就是在一个类中,有相同的函数名称,但形参不用的函数。方法的重载的规则方法名必须相同参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配以选择对应的方法,如果匹配失败,则编译器报错。public class Demo02 { public static void main(S
2021-04-17 13:01:12
78
原创 方法
方法System.out.println(),那么它是什么?System是类,out是对象,println()是方法java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于我们后期的扩展。public class Demo01 { //
2021-04-17 12:59:51
116
原创 打印三角形``
打印三角形``public class TestDemo { public static void main(String[] args) { //打印五层的三角形 for (int i = 1; i <=5; i++) { for (int j = 5; j>=i ; j--) { System.out.print(" "); } for (int
2021-02-17 10:43:07
91
原创 ## break continue
break continuebreak在任何循环语句的主体部分,均可以用break控制循环的流程。break用于强行退出循环,不执行循环中的剩余的语句。(break语句也在switch语句中使用)continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。public class BreakDemo { public static void main(String[] args) { int i = 0 ;
2021-02-17 10:42:34
92
原创 增强for循环
增强for循环java5引入了一种主要用于数组或集合的增强型for循环java增强for循环语法格式如下:for (声明语句:表达式){//代码句子}声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法public class ForDemo05 { public static void main(String[] args) { i
2021-02-17 10:42:00
119
原创 用for循环打印九九乘法表
public class ForDemo04 { public static void main(String[] args) { //打印九九乘法表 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i+"*"+j+"="+(j*i)+"\t"); }
2020-12-26 14:30:47
158
原创 For循环
For循环虽然所有循环结构都可以用while 或者 do while表示,但java提供了另一个中语法,for循环,使一些循环结构变得更加简单。for循环语句时支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环执行的次数是在执行前就确定的。语法格式如下:for(初始化;布尔表达式;更新){ //代码语句}public class ForDemo01 { public static void main(String[] args) { in
2020-12-26 14:29:09
176
原创 顺序结构
顺序结构java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构语句与语句之间,框与框之间是按从上到下的顺序进行的,它是有若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构.`public class ShunXuDemo01 { public static void main(String[] args) { System.out.println("hello1"); Syst
2020-12-17 17:03:49
236
原创 Scanner对象
Scanner对象基本语法Scanner s = new Scanner(System.in);通过Scanner 类的next() 与 nextLine() 方法获取输入的字符串,在读取前一般用hasNext() 与 hasNextLine()判断是否还有输入的数据。next():一定要读取有效字符后才可以结束输入。对输入有效字符之前遇到的空白,next()方法会自动将其去掉只对输入有效字符后才将其后面的空白作为分隔符或者结束符next()不能得到带有空格的字
2020-12-16 22:29:20
768
原创 运算符
运算符算术运算符: +, -, *, /, %, ++ , –赋值运算符: =关系运算符:> , < , >= , <= , == , != ,instance of逻辑运算符:&&(与), || (或) , ! {(非)public class Demo01 { public static void main(String[] args) { // 二元运算符 // ctrl + d :复制当前行下一行
2020-12-11 17:41:49
138
原创 ## 类型转换
类型转换由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。低------高byte,short,char=>int => long => float => double运算中,不同类型的数据先化为同一类型,然后进行运算。强制转换(由高到低):int i = 127 byte b = (byte) i // (类型) + 变量名自动转换(由低到高):会自动转换int i = 127 double b = i // 自动转化
2020-12-11 16:28:52
183
原创 java数据类型两大类
java的数据类型分为两大类基本类型 // 八大基本数据类型 //最常用的是int int num1 = 10; byte num2 = 20; short num3 = 30; //long 类型要在数字后面加个Llong num4 = 30L; //小数/ 浮点数 //float类型在后面加个F float num5 = 50.10F; double num6 = 50.101; //字符 //char只能是一个字或者一个字母 char
2020-11-10 20:27:32
246
原创 JDK的卸载和安装
卸载JDK删除java的安装目录删除java-home删除path下关于Java的目录查看Java-version安装JDK百度jdk8,找到下载地址同意协议下载电脑对应的版本双击安装jdk记住安装路径配置环境变量我的电脑–>右击–>属性环境变量–>Java_HOME配置path变量测试jdk安装成功打开cmdJava _version...
2020-10-22 22:46:34
66
原创 常用的Dos命令
打开cmd方式开始+win系统+命令提示符win + R 输入cmd打开控制台(推荐使用)在任意文件夹下,按住shift+鼠标右键,在此处打开命令行窗口资源管理器的地址栏前面加上 cmd 路径开始+win系统+右击命令提示符选择更多+以管理员方式运行常用的Dos命令盘符切换: D/E + 冒号 +回车查看当前目录的所有文件 :dir + 回车切换目录: cd /d E:(不同盘切换到E盘); cd…(返回上一级) ; cd +文件名(同盘进入某个目录)清理屏幕:cls退出终
2020-10-22 21:05:32
89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人