Open ONLY-yours opened 3 years ago
简述抽象类和接口区别
共同点:都是一种类,都不能使用new操作符创建实例
不同点:抽象类的方法只能在抽象类的子类中实现并且方法要全部声明用extends
,接口适用于多个对象的n个共同属性的n个方法用implements
。
java中赋值操作部分,哪些属于浅拷贝,哪些为深拷贝
引用类型是浅拷贝,赋值的值是深拷贝
尽量使用多种方式创建java对象(能写多少写多少)
(1)new一个对象
简述“equals”与“==”、“hashCode”的区别和使用场景
== 是比较两个对象的地址所对应的值,返回值是boolean
类型
equals是Object的方法,比较两个对象的地址,返回值也是boolean
类型,但我们可以进行重写改变比较的过程。
hashCode的返回值是int
类型,也是Object的一个方法,相同的值hash相同,不同的值hash码也可能相同
实现一个自己的Map类
import java.util.LinkedList;
public class New23 {
static class Entry<K,V>{
K key;
V value;
public Entry(K key,V value){
super();
this.key=key;
this.value=value;
}
}
public static class myMap<K,V> {
private static final int MAXSIZE=999;
LinkedList[] arr = new LinkedList[MAXSIZE];
private int size;
public int size(){
return size;
}
public void put(K key, V value){
Entry<K, V> e = new Entry(key,value);
//使用hashCode计算新的键值对要放在数组的哪个位置
int a = key.hashCode()%MAXSIZE;
if(arr[a]==null){
LinkedList list = new LinkedList();
list.add(e);
arr[a]=list;
}else{
//如果已经存在该key,则覆盖原来的value
LinkedList list = arr[a];
for(int i=0; i<list.size();i++){
Entry<K,V> ele= (Entry) list.get(i);
if(ele.key.equals(key)){
ele.value=value;
return ;
}
}
list.add(e);
}
}
public V get(K key){
int a = key.hashCode()%MAXSIZE;
if(arr[a]!=null){
LinkedList list = arr[a];
for(int i=0; i<list.size();i++){
Entry<K,V> e= (Entry) list.get(i);
if(e.key.equals(key)){
return e.value;
}
}
}
return null;
}
public static void main(String[] args) {
myMap m = new myMap();
m.put("01",100);
m.put("02",99);
m.put("03",98);
m.put("04",97);
System.out.println(m.get("02"));
}
}
}
用java实现冒泡排序
int[] arr={8,6,4,9,2,1};
System.out.println("排序前为:");
for (int num:arr){
System.out.print(num+" ");
}
System.out.println();
for (int i=0;i< arr.length;i++){
for (int j=0;j< arr.length-1-i;j++){
if (arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("排序后数组为:");
for (int num:arr){
System.out.print(num+" ");
}
如何获取View的宽高
方法一:使用view的measure方法
public int getViewWidth(LinearLayout view){
view.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
return view.getMeasuredWidth();
}
方法二:该activity的监听事件中增加一个宽高的显示
不使用Button组件,通过TextView和View完成Button的样式及点击功能。(要求长度40dp、宽度20dp,居中,字体大小为10dp,其余无硬性要求)
<TextView
android:id="@+id/btn_5"
android:layout_width="40dp"
android:layout_height="20dp"
android:gravity="center"
android:textSize="10dp"
android:text="123"/>
点击功能:
跳转:更改对象类型
点击变色:设置监听事件,更改背景图片和更改字体颜色
使用Toast弹出消息(尽量多种方法)
1.通过makeText方法创建消息提示框
2.通过Toast类的构造方法创建消息提示框
使用EditView编写密码框(上限10个字数,无下划线,背景为红色)
<EditText
android:id="@+id/btn_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:maxLength="10"
android:theme="@style/MyEditText"
/>
<style name="MyEditText" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@null</item>
<item name="colorControlActivated">@null</item>
</style>
如何隐藏Android自带的顶部控制栏(尽量多种方法)
1.requestWindowFeature(Window.FEATURE_NO_TITLE);
2.themes
里
<item name="android:windowNoTitle">true</item>
如何让界面上元素消失(尽量多种方法)
1.android:visibility
使用ListView实现上下滑动
ListView套在ScrollView里面就可以上下滑动
使用RecyclerView实现左右滑动
1.写一个Adapter
2..setOrientation(LinearLayoutManager.HORIZONTAL);
设置一下布局方向
使用ImageView加载本地图片(drawble下的第一个图片)
为Imageiew加载网络图片(若网络加载失败,失败图片显示为drawble下的第一个图片)网络图片地址:https://img-home.csdnimg.cn/images/20201124032506.png
ImageView image1 = (ImageView) findViewById(R.id.iv1); //获得ImageView对象
/*为什么图片一定要转化为 Bitmap格式的!! */
Bitmap bitmap = getLoacalBitmap("/sdcard/tubiao.jpg"); //从本地取图片(在cdcard中获取) //
image1 .setImageBitmap(bitmap); //设置Bitmap
public static Bitmap getLoacalBitmap(String url) {
try {
FileInputStream fis = new FileInputStream(url);
return BitmapFactory.decodeStream(fis); ///把流转化为Bitmap图片
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}
Bitmap bitmap=getHttpBitmap("https://img-home.csdnimg.cn/images/20201124032506.png");
//从网上取图片
image1 .setImageBitmap(bitmap); //设置Bitmap
public static Bitmap getHttpBitmap(String url) {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
myFileUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setConnectTimeout(0);
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
res资源下的drawble和mipmap两者区别
res 目录下面 mipmap 和 drawable 的区别也就是上面这个设置是否开启的区别。mipmap 目录下的图片默认 setHasMipMap 为 true,drawable 默认 setHasMipMap 为 false。 google 建议大家只把 app 的启动图标放在 mipmap 目录中,其他图片资源仍然放在 drawable 下面
如何在一个界面中引入另外一个绘制好的xml
1.fragment
2.
<include android:id="@+id/included1"
layout="@layout/anotherlayout" />
界面过长情况下,使用控件实现页面上下滚动效果
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
请尽量还原下图中的登陆模块:
<TextView
android:id="@+id/tv_title"
android:layout_height="50dp"
android:layout_width="match_parent"
android:background="#33A0E3"
android:text="登录"
android:textColor="#fff"
android:textSize="25sp"
android:gravity="center"/>
<EditText
android:id="@+id/et_id"
android:layout_height="50dp"
android:layout_width="match_parent"
android:hint="请输入账号(手机号)"
android:inputType="phone"
android:textColorHint="#95A1AA"
android:layout_marginTop="40dp"
android:background="#fff"
android:drawableLeft="@drawable/id_pic"
android:padding="2dp"
/>
<EditText
android:id="@+id/et_password"
android:layout_height="50dp"
android:layout_width="match_parent"
android:hint="请输入密码"
android:inputType="textPassword"
android:textColorHint="#95A1AA"
android:layout_marginTop="10dp"
android:background="#fff"
android:drawableLeft="@drawable/pw_pic"
android:padding="2dp"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="5dp"
android:padding="5dp">
<TextView
android:id="@+id/tv_2"
android:layout_width="60dp"
android:layout_height="20dp"
android:text="忘记密码"
android:textColor="#33A0E3"/>
<TextView
android:id="@+id/tv_3"
android:layout_width="match_parent"
android:layout_height="20dp"
android:text="注册"
android:layout_toRightOf="@+id/tv_2"
android:gravity="right"
android:textColor="#33A0E3"/>
</RelativeLayout>
<Button
android:id="@+id/btn_1"
android:layout_width="300dp"
android:layout_height="50dp"
android:background="#33A0E3"
android:text="登录"
android:textColor="#fff"
android:textSize="22sp"
android:layout_gravity="center"/>
button1 = findViewById(R.id.btn_1);
editText1 = findViewById(R.id.et_id);
editText2 = findViewById(R.id.et_password);
TextWatcher watcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
for (EditText et : new EditText[]{editText1,
editText2}) {
try {
Double.parseDouble(String.valueOf(et.getText()));
} catch (NumberFormatException e) {
// Disable button, show error label, etc.
button1.setEnabled(false);
return;
}
}
button1.setEnabled(true);
//button1.setBackgroundColor(Color.parseColor("#F8F8FF"));
}
};
editText1.addTextChangedListener(watcher);
editText2.addTextChangedListener(watcher);
简述抽象类和接口区别
一个类只能继承一个抽象类,可以继承多个接口
java中赋值操作部分,哪些属于浅拷贝,哪些为深拷贝
浅拷贝:基本数据类型拷贝数值,将一个对象的引用赋值给另一个对象
深拷贝:基本数据类型拷贝数值,将一个对象的内容全部赋值给另一个对象
尽量使用多种方式创建java对象(能写多少写多少)
(1)Student st1=new Student();
简述“equals”与“==”、“hashCode”的区别和使用场景
equals为true代表两个对象有相同的引用
“==”为true代表两个对象有相同的内容
两个对象的equals相同=>两个对象的hashcode相同
两个对象的hashcode不相同=>两个对象的equals不相同
实现一个自己的Map类
用java实现冒泡排序
int[] a=new int[10];
Scanner input=new Scanner(System.in);
for(int i=0;i<10;i++){
a[i]=input.nextInt();}
for(int j=0;j<9;j++){
for(int i=0;i<9-j;i++){
if(a[i+1]<a[i]){
int temp=a[i];a[i]=a[i+1];a[i+1]=a[i];
}}}
for(int i=0;i<10;i++){
System.out.println(a[i]+" ");
}
如何获取View的宽高
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
if(hasWindowFocus){
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
}
}
不使用Button组件,通过TextView和View完成Button的样式及点击功能。(要求长度40dp、宽度20dp,居中,字体大小为10dp,其余无硬性要求)
<TextView
android:layout_marginTop="20dp"
android:layout_width="40dp"
android:layout_height="20dp"
android:text="按"
android:textSize="10dp"
android:gravity="center"
android:background="#DCDCDC"
/>
tv1=findViewById(R.id.tv1);
tv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(tv1_Activity.this,tv1_tv1Activity.class);
startActivity(intent);
}
});
使用Toast弹出消息(尽量多种方法)
在layout中设置 onClick=“showToast”
public void showToast(){
Toast.makeText(this,"Button被点击了",Toast.LENGTH_SHORT).show();
}
使用EditView编写密码框(上限10个字数,无下划线,背景为红色)
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#FF0000"
android:hint="密码"
android:textSize="10sp"
android:inputType="textPassword"
/>
如何隐藏Android自带的顶部控制栏(尽量多种方法)
在manifest中添加如下
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
如何让界面上元素消失(尽量多种方法)
局中设置控件为android:visibility
在程序中可用setVisibility(View.GONE);
使用ListView实现上下滑动
在布局中将listview放在ScrollView下
使用RecyclerView实现左右滑动
使用ImageView加载本地图片(drawble下的第一个图片)
`
为Imageiew加载网络图片(若网络加载失败,失败图片显示为drawble下的第一个图片)网络图片地址:https://img-home.csdnimg.cn/images/20201124032506.png
(1)在github上搜索glide,打开bumptech/glide
(2)在AS的build.gradle中添加对应的代码
(3)在manifast中添加
(4)用法
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
res资源下的drawble和mipmap两者区别
mipmap仅仅用于应用启动图标,可以根据不同分辨率进行优化。其他的图标资源,还是要放到drawable文件夹中。
如何在一个界面中引入另外一个绘制好的xml
<include layout="@layout/personal_center"/>
界面过长情况下,使用控件实现页面上下滚动效果
<ScrollView/>
请尽量还原下图中的登陆模块:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"
<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <View android:layout_width="match_parent" android:layout_height="100dp" android:background="#00BFFF"/> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="登录" android:textSize="30sp" android:gravity="center" android:textColor="#ffffff"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F8F8FF" android:orientation="vertical"> <EditText android:id="@+id/ext_username" android:layout_marginTop="70dp" android:layout_width="match_parent" android:layout_height="50dp" android:padding="5dp" android:background="#ffffff" android:hint="请输入账号(手机号)" android:inputType="number" android:textColor="#000000"/> <EditText android:id="@+id/ext_password" android:layout_width="match_parent" android:layout_height="50dp" android:background="#ffffff" android:padding="5dp" android:hint="请输入密码" android:inputType="textPassword" android:textColor="#000000"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="忘记密码"
android:textColor="#00BFFF"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="300dp"
android:text="注册"
android:textColor="#00BFFF"
android:textSize="16sp" />
</LinearLayout>
<Button
android:id="@+id/bt_denglu"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="50dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:text="登录"
android:textColor="#ffffff"
android:background="@drawable/bg_bt_denglu"
/>
12.26小测试
Java部分:
Android UI部分:
要求: