Android——基本控件(下)(十九)

news2024/11/26 19:33:30

1. 菜单:Menu

1.1 知识点

(1)掌握Android中菜单的使用;

(2)掌握选项菜单(OptionsMenu)的使用;

(3)掌握上下文菜单(ContextMenu)的使用;

(4)掌握子菜单(SubMenu)的使用;

1.2 具体内容

 

 

package com.example.menuproject;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MenuActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_menu);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(Menu.NONE,//菜单不分组
				Menu.FIRST+1,//菜单项的id
				1,//菜单的编号
				"添加")//菜单标题
		        .setIcon(//设置菜单图标
		        R.drawable.add);
		menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(R.drawable.save);
		menu.add(Menu.NONE,Menu.FIRST+3,3,"编辑").setIcon(R.drawable.edit);
		menu.add(Menu.NONE,Menu.FIRST+4,4,"详细").setIcon(R.drawable.detail);
		menu.add(Menu.NONE,Menu.FIRST+5,5,"删除").setIcon(R.drawable.delete);
		menu.add(Menu.NONE,Menu.FIRST+6,6,"更多").setIcon(R.drawable.more);
		return true;
	}

}

 只需要在onCreateOptionsMenu(Menu menu)去进行菜单的设置就行

@Override
	public boolean onPrepareOptionsMenu(Menu menu){
		Toast.makeText(this, "菜单显示前操作", 0).show();
		return true;
	}

以上是在菜单显示之前执行的一个方法,可以从父类当中去覆写以便实现一些逻辑

@Override
	public void onOptionsMenuClosed(Menu menu){
		Toast.makeText(this, "选项关闭", 0).show();
	}

以上实在菜单关闭之后执行的一个方法。

@Override
	public boolean onOptionsItemSelected(MenuItem item){
		switch (item.getItemId()){
		case Menu.FIRST+1:
			Toast.makeText(this, "这是添加菜单项", 0).show();
		    break;
		case Menu.FIRST+2:
			Toast.makeText(this, "这是保存菜单项", 0).show();
		    break;
		case Menu.FIRST+3:
			Toast.makeText(this, "这是编辑菜单项", 0).show();
		    break;
		case Menu.FIRST+4:
			Toast.makeText(this, "这是详情菜单项", 0).show();
		    break;
		case Menu.FIRST+5:
			Toast.makeText(this, "这是删除菜单项", 0).show();
		    break;
		case Menu.FIRST+6:
			Toast.makeText(this, "这是更多菜单项", 0).show();
		    break;
		}
		return false;
	}

以上都是在Activity当中去添加菜单选项。

当然也可以在xml文件中添加菜单选项。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/m1"
        android:orderInCategory="100"
        android:title="添加"/>
    <item
        android:id="@+id/m2"
        android:orderInCategory="101"
        android:title="保存"/>
    <item
        android:id="@+id/m3"
        android:orderInCategory="102"
        android:title="编辑"/>
    <item
        android:id="@+id/m4"
        android:orderInCategory="103"
        android:title="详情"/>
    <item
        android:id="@+id/m5"
        android:orderInCategory="104"
        android:title="删除"/>
    <item
        android:id="@+id/m6"
        android:orderInCategory="105"
        android:title="更多"/>
    

</menu>

此处需要注意的是,加载的xml文件不是layout文件而是menu文件

@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.getMenuInflater().inflate(R.menu.menu, menu);
		return true;
	}
	

上下文菜单

package com.example.menuproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MenuActivity extends Activity {
    String data[] ={"中国高校培训","培训课程","万策智业"};
    ListView listView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.listView = new ListView(this);
		listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,this.data));
		super.registerForContextMenu(listView);//注册上下文菜单
		super.setContentView(listView);
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, v, menuInfo);
		menu.setHeaderTitle("信息操作");
		menu.add(Menu.NONE,Menu.FIRST+1,1,"添加联系人");
		menu.add(Menu.NONE,Menu.FIRST+2,2,"查看详情");
		menu.add(Menu.NONE,Menu.FIRST+3,3,"删除信息");
		menu.add(Menu.NONE,Menu.FIRST+4,4,"编辑");
	}
	
	
}

 以上是实现上下文菜单组件

@Override
	public boolean onContextItemSelected(MenuItem item){
		switch (item.getItemId()){
		case Menu.FIRST+1:
			Toast.makeText(this, "添加联系人", 0).show();
		    break;
		case Menu.FIRST+2:
			Toast.makeText(this, "查看详情", 0).show();
		    break;
		case Menu.FIRST+3:
			Toast.makeText(this, "删除信息", 0).show();
		    break;
		case Menu.FIRST+4:
			Toast.makeText(this, "编辑", 0).show();
		    break;
	
		}
		return false;
	}

子菜单:SubMenu

@Override
	public boolean onCreateOptionsMenu(Menu menu){
		SubMenu fileMenu = menu.addSubMenu("文件");
		SubMenu editMenu = menu.addSubMenu("编辑");
		
		fileMenu.add(Menu.NONE,Menu.FIRST+1,1,"新建");
		fileMenu.add(Menu.NONE,Menu.FIRST+2,2,"打开");
		editMenu.add(Menu.NONE,Menu.FIRST+3,3,"保存");
		editMenu.add(Menu.NONE,Menu.FIRST+4,4,"撤销");
		return true;
	}

 子菜单的监听

@Override
	public boolean onOptionsItemSelected(MenuItem item){
		switch (item.getItemId()){
		case Menu.FIRST+1:
			Toast.makeText(this, "新建子菜单", 0).show();
		    break;
		case Menu.FIRST+2:
			Toast.makeText(this, "打开子菜单", 0).show();
		    break;
		case Menu.FIRST+3:
			Toast.makeText(this, "保存子菜单", 0).show();
		    break;
		case Menu.FIRST+4:
			Toast.makeText(this, "撤销子菜单", 0).show();
		    break;
	    }
		return false;
	}

1.3 小结

(1)界面开发之中使用菜单可以有效的对工具集进行管理;

(2)Android中一共分为三种菜单:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。

2. 隐式抽屉组件:SlidingDrawer

2.1 知识点

(1)掌握SlidingDrawer 的主要作用及实现;

(2)掌握SlidingDrawer 组件的事件处理方式;

2.2 具体内容

 

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SlidingDrawerActivity" >

    <SlidingDrawer 
        android:id="@+id/sd"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:handle="@+id/img"
        android:content="@+id/content"
        >
        <ImageView 
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/pic_8"
            />
        <LinearLayout
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
        </LinearLayout> 
    </SlidingDrawer>
    
    
    
</LinearLayout>

定义一个内嵌LInearLayout,以便能够在后台动态添加程序集

package com.example.slidingdrawer;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
import android.widget.SlidingDrawer.OnDrawerScrollListener;
import android.widget.Toast;

public class SlidingDrawerActivity extends Activity {
    String data[]={"兰州","定西","武威","张掖"};
    ListView listView = null;
    SlidingDrawer sd = null;
    ImageView img = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sliding_drawer);
		LinearLayout content = (LinearLayout) super.findViewById(R.id.content);
		listView = new ListView(this);
		listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,data));
		content.addView(this.listView);
		sd = (SlidingDrawer) super.findViewById(R.id.sd);
		img = (ImageView) super.findViewById(R.id.img);
		sd.setOnDrawerOpenListener(new OnDrawerOpenListenerImpl());
		sd.setOnDrawerCloseListener(new OnDrawerCloseListenerImpl());
		sd.setOnDrawerScrollListener(new OnDrawerScrollListenerImpl());
		
	}

	private class OnDrawerOpenListenerImpl implements OnDrawerOpenListener{

		@Override
		public void onDrawerOpened() {
			img.setImageResource(R.drawable.pic_6);
		}
		
	}
	private class OnDrawerCloseListenerImpl implements OnDrawerCloseListener{

		@Override
		public void onDrawerClosed() {
			img.setImageResource(R.drawable.pic_8);
			
		}
		
	}
    private class OnDrawerScrollListenerImpl implements OnDrawerScrollListener{

		@Override
		public void onScrollEnded() {
          Toast.makeText(SlidingDrawerActivity.this, "窗口拖动结束", 0).show();
		}

		@Override
		public void onScrollStarted() {
			// TODO Auto-generated method stub
			Toast.makeText(SlidingDrawerActivity.this, "窗口拖动开始", 0).show();
		}}
}

2.3 小结

(1)使用SlidingDrawer 组件可以更好的管理按钮操作集。

3. 缩放控制:ZoomControls

3.1 知识点

(1)掌握ZoomControls组件的使用;

3.2 具体内容

实现利用缩放组件进行对字体大小缩放。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ZoomControlsActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ZoomControls控件控制文字缩放" 
        android:textSize="10dp"
        />
    
    <ZoomControls 
        android:id="@+id/zoomcontrols"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        />

</LinearLayout>

 

package com.example.zoomcontrols;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.ZoomControls;

public class ZoomControlsActivity extends Activity {
    int size =10;
    TextView tv = null;
    ZoomControls zc =null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_zoom_controls);
		zc = (ZoomControls) super.findViewById(R.id.zoomcontrols);
		tv = (TextView) super.findViewById(R.id.tv);
		zc.setOnZoomInClickListener(new OnZoomInCLickListenerImpl());
		zc.setOnZoomOutClickListener(new OnZoomOutCLickListenerImpl());
	}
    //放大监听
    private class OnZoomInCLickListenerImpl implements OnClickListener{

		@Override
		public void onClick(View v) {
			ZoomControlsActivity.this.size += 2;
			ZoomControlsActivity.this.tv.setTextSize(size);
		}
    	
    	
    }
    //缩小监听
    private class OnZoomOutCLickListenerImpl implements OnClickListener{

		@Override
		public void onClick(View v) {
			ZoomControlsActivity.this.size -= 2;
			ZoomControlsActivity.this.tv.setTextSize(size);
		}
    	
    	
    }
}

3.3 小结

(1)ZoomControls组件可以由用户根据自己的需要控制显示的大小。

4. 弹出窗口:PopupWindow

4.1 知识点

(1)掌握弹出窗口的基本实现;

(2)掌握弹出窗口的事件处理操作;

4.2 具体内容

弹出窗口意味着在原有的手机上,增加一个专门的显示层,作为弹出窗口显示的空间。

 

既然PopupWindow组件是可以直接在界面上显示自己的一个界面层,那么就需要专门的一个布局管理器文件,来定PopupWindow组件。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请选择您所需要的状态" />
    <RadioGroup 
        android:id="@+id/checkStatus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <RadioButton 
            android:id="@+id/onLine"
            android:layout_width="match_parent"
        	android:layout_height="wrap_content"
            android:text="在线"
            />
        <RadioButton 
            android:id="@+id/offLine"
            android:layout_width="match_parent"
        	android:layout_height="wrap_content"
            android:text="离线"
            />
        <RadioButton 
            android:id="@+id/steach"
            android:layout_width="match_parent"
        	android:layout_height="wrap_content"
            android:text="隐身"
            />
    </RadioGroup>
	<Button 
	    android:id="@+id/cancel"
	    android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="取消"
	    />
</LinearLayout>

以上的布局管理器就是一个作为PopupWindow的显示。

现在我们来定义我们主布局管理器。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/statusInfo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="用户当前状态:在线" />
    <Button 
        android:id="@+id/popbut"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="选择状态"
        />

</LinearLayout>

以上就是主布局管理器,现在还有一个问题,现在是通过按钮事件去弹出PopupWindow,那么肯定需要一个转换器将需要显示的布局管理器设置到PopupWindow上。这时需要使用LayoutInflater进行转换。现在我们来编写Activity程序。

package com.example.popupwindowproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
public class PopupWindowActivity extends Activity {
	private  Button statuBut = null;
	private TextView statuInfo = null;
	private RadioGroup checkStatu = null;
	private Button cancelBut = null;
	private PopupWindow popWin = null;
	private View popView = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_popup_window);
		this.statuBut = (Button) super.findViewById(R.id.popbut);
		this.statuInfo = (TextView) super.findViewById(R.id.statusInfo);
		this.statuBut.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				LayoutInflater inflater = LayoutInflater.from(PopupWindowActivity.this);
				PopupWindowActivity.this.popView = (View) inflater.inflate(R.layout.popup_window, null);//将布局文件转换成组件
				PopupWindowActivity.this.popWin = new PopupWindow(PopupWindowActivity.this.popView,300,220);//创建一个新的PopupWindow
				PopupWindowActivity.this.popWin.setContentView(PopupWindowActivity.this.popView);//设置显示组件
				PopupWindowActivity.this.checkStatu = (RadioGroup) PopupWindowActivity.this.popView.findViewById(R.id.checkStatus);
				PopupWindowActivity.this.cancelBut = (Button) PopupWindowActivity.this.popView.findViewById(R.id.cancel);
				PopupWindowActivity.this.checkStatu.setOnCheckedChangeListener(new OnCheckedChangeListener() {
					@Override
					public void onCheckedChanged(RadioGroup group, int checkedId) {
						RadioButton rbut = (RadioButton) PopupWindowActivity.this.popView.findViewById(group.getCheckedRadioButtonId());//取得选中的组件ID
						PopupWindowActivity.this.statuInfo.setText("您选中的状态是:"+rbut.getText());//修改我们文本显示组件的内容
					}
				});
				PopupWindowActivity.this.cancelBut.setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						PopupWindowActivity.this.popWin.dismiss();//隐藏PopupWindow
					}
				});
				PopupWindowActivity.this.popWin.showAtLocation(PopupWindowActivity.this.statuBut,Gravity.CENTER, 0, 0);//显示弹出窗口
			}
		});
	}
}

是要是组件就离不开布局文件,有个前提:就是组件中显示的内容会比较多。

4.3 小结

(1)弹出窗口需要一个单独的布局管理器进行配置;

(2)可以使用LayoutInflater通过配置文件读取组件信息;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F4_SD卡

目录 前言 1. SDIO协议简介 2. SDIO命令及响应 3. SD卡的操作模式及切换 4. STM32的SDIO接口 5. SDIO结构体 6. SDIO相关寄存器 7. 实验程序 7.1 main.c 7.2 SDIO_Card.c 7.3 SDIO_Card.h 前言 在之前的单片机学习过程中&#xff0c;我们已经了解到了单片机系统都需…

SQL server开启变更数据捕获(CDC)

一、CDC简介 变更数据捕获&#xff08;Change Data Capture &#xff0c;简称 CDC&#xff09;&#xff1a;记录 SQL Server 表的插入、更新和删除操作。开启cdc的源表在插入、更新和删除操作时会插入数据到日志表中。cdc通过捕获进程将变更数据捕获到变更表中&#xff0c;通过…

java子类继承父类方法、或者接口中方法的javadoc注释

说明 详情可以阅读&#xff1a; https://docs.oracle.com/en/java/javase/19/docs/specs/javadoc/doc-comment-spec.html#method-comment-inheritance 子类继承父类、或者子类实现接口&#xff0c;在子类中为了避免重复写注释&#xff0c;可以在子类方法注释的主要描述部分、或…

基于GitHooks实现项目自动实时部署

目录 基于GitHooks实现项目自动部署 基于SVNJenkins发布项目 基于GitHooks实现项目自动部署 以上创建的所有任务&#xff0c;构建工作是基于在开发人员提交完代码到远程仓库完成&#xff0c;通知运维后&#xff0c;需要手动执行构建任务&#xff0c;这样就有些不太方便。我们…

智能优化算法一元函数优化

目录 一、问题描述 二、解决方法 1.模拟退火 1.1 算法思路 1.2 求解代码 1.3 计算结果 2.粒子群算法 2.1 算法思路 2.2 求解代码 2.3 计算结果 3.遗传算法 3.1 算法思路 3.2 求解代码 3.3 计算结果 一、问题描述 本篇文章所做的是分别用模拟退火、粒子群算法…

MySQL 8.1安装

1. 下载地址 https://dev.mysql.com/downloads/mysql/8.0.html 我这里没有采用installer安装&#xff0c;因为installer安装依赖visual studio&#xff0c;所以&#xff0c;我下载的是zip文件。 最终下载的版本如下&#xff1a; 2. 添加环境变量 解压&#xff0c;添加环境…

图的存储:邻接表法

1.邻接表的定义 不同于邻接矩阵&#xff08;二维数组存储&#xff09;&#xff0c;邻接表采用的顺序链式存储实现的。 1.存储方式 顶点&#xff1a;使用结构体存储顶点&#xff0c;一个顶点包括顶点信息和指向第一条边或者弧的指针。用邻接表存储图&#xff1a;使用结构体存…

Spring Boot存在路径遍历漏洞CVE-2021-22118

文章目录 0.前言1.参考文档2.基础介绍1. 影响的版本2. **漏洞利用原理&#xff1a;** 3.解决方案3.1. 方案13.2. 方案23. 方案3 0.前言 背景&#xff1a;Spring Boot存在路径遍历漏洞。CVE-2021-22118: 官方 issue也有对此的记录&#xff0c;感兴趣可以看下 https://github.com…

Spring Boot集成MyBatis Plus

文章目录 一、前言二、步骤2.1、步骤 1&#xff1a;创建 Spring Boot 项目2.2、添加依赖2.2.1、基本的Spring和Spring MVC功能2.2.2、MySQL驱动依赖2.2.3、 MyBatis Plus 的依赖 2.3、配置数据库连接2.4、创建实体类2.5、创建 Mapper 接口2.6、编写 Service 层2.7、编写 Contro…

自动化运维工具——ansible安装及模块介绍

目录 一、ansible——自动化运维工具 1.1 Ansible 自动运维工具特点 1.2 Ansible 运维工具原理 二、安装ansible 三、ansible命令模块 3.1 command模块 3.2 shell模块 3.3 cron模块 3.4 user模块 3.5 group 模块 3.6 copy模块 3.7 file模块 3.8 ping模…

Mat类数据的读取

目录 1.Mat类矩阵的常用属性 2.Mat元素的读取 1.at方法读取Mat矩阵元素 at (int row,int col) 2.矩阵元素地址定位方式访问元素 3.Android jni demo 1.Mat类矩阵的常用属性 下面是一些Mat类的常用属性&#xff1a; rows: 返回Mat对象的行数。 cols: 返回Mat对象的列数。 …

linux top命令的参数解释

参考&#xff1a; https://blog.csdn.net/weixin_45465395/article/details/115728520?ydrefereraHR0cHM6Ly9jbi5iaW5nLmNvbS8%3D 上面的一列是总的CPU使用情况&#xff0c;id是指的总的空闲的 内容 含义 0.0%us 用户空间占用CPU百分比 0.0%sy 内核空间占用CPU百分比 0.0%ni…

gpt-3.5-turbo微调图形界面;Hugging Face完成2.35亿美元融资

&#x1f989; AI新闻 &#x1f680; 人工智能初创公司Hugging Face完成2.35亿美元融资&#xff0c;估值达到45亿美元 摘要&#xff1a;总部位于纽约的人工智能初创公司Hugging Face完成了一轮2.35亿美元的融资&#xff0c;估值达到45亿美元。本轮融资的投资者包括谷歌、亚马…

网络编程 day 2

1、TCP的服务器 客户端的代码 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.114.64"…

匿名对象和一般对象的区别

1.格式的不同 一般对象的格式&#xff1a; ​ Object obj new Object(); ​ 匿名对象的格式&#xff1a; ​ new Object(); 2.作为参数传递机制的不同 2.1先看看一般对象的使用机制 执行步骤&#xff1a; 1.首先程序进入main()函数&#xff0c;执行Object obj&#xff0c;…

vscode打开项目太大,文件太多,无法找到自己的目录

我的技巧是直接在vscode的terminal里面 用find ./ -name *file_name*寻找我想要找的文件。 这样子出来的文件还带有路径&#xff0c;可以直接点过去。

Java 静态变量 NullPointerException !空指针异常

Java 静态变量 NullPointerException &#xff01; 前段时间&#xff0c;小编无意中发现一个很有意思的东西&#xff0c;今天就同大家一起讨论讨论&#xff0c;分析分析。 话不多说&#xff0c;直接上代码&#xff1a; // 定义一个 People 类, 就一个静态变量 name public…

lua的函数

1.一个示例实现列表的元素的求和 [root]# more funcAdd.lua function add(a)local sum 0for i 1,#a dosum sum a[i]endreturn sum enda {1,2,3,4,5,6}local sum add(a)print(sum)

Git结合Gitee的企业开发模拟

1.多人协作一&#xff08;共享分支&#xff09; 目标&#xff1a;master分支下file.txt文件新增text_1、text_2文本。 实现&#xff1a;由开发者1增加text_1&#xff0c;由开发者2增加text_2。这里我们可以使用两台电脑&#xff0c;或者使用云服务器来真实模拟两名开发者。 条…

区块链BaaS篇

区块链BaaS&#xff08;Blockchain as a Service&#xff09;区块链即服务&#xff1b;感觉5年前做的BaaS和现在做的BaaS没啥区别&#xff0c;换了批人重复造轮子&#xff0c;BaaS做的越来越乱&#xff0c;也越来越中心化。BaaS是方便区块链调用的工具&#xff0c;工具是方便使…