android(eclipse)编程中常见的java问题总结(四)
0:java流: 流是具有方向的 在文件操作中java流分为字节流:Filereader和Filewriter字符流:FileOutputStream,FileInputSream 例如在文件存储操作中:
pulic void save(){
String data="data to save";
FileOutputSream out=null;
BufferedWriter writer=null;
try{
out=openFileOutPut ("data_name",Context.MODE_PRIVATE);
writer=new BufferedWriter(new OutputStream(out));
writer.write(data);
}catch(IOException e){//平时使用的是Exceotion e
e.printStackTrace();
}finally{
try{
if(writer!=null){
writer.close();
}
}catch(IOException e){
e.printStackTrace();}
}}
1:Java中,类不实例化是可以调用方法的,这种方法叫做静态方法,也叫做类方法。静态变量
类的静态方法不属于类的对象,而属于类本身,在该类首次使用的时候加载到系统的方法区中,一般 可以使用类名直接调用类的静态方法,而不需要实例化对象。由于 静态方法并不属于对象,因此在静态方法中无法操作类的普通成员变量,只能操作类的静态成员变量。 (因为普通成员变量依附于类的对象存在,而类的静态方法并不属于类对象,在类对象被实例化之前 静态方法就已经存在,故在静态方法中操作普通成员变量,相当于在无对象的情况下对其中的成员变 量进行操作,这是无意义的,同时也不符合面向对象的思想。) 在静态方法中可以操作类的静态属性,而静态属性是类的属性,可以作为一次程序运行期间的全局变 量来使用,因此静态方法的主要作用就是对类中静态属性的 初始化或者根据静态属性实现一定的业务逻辑。
2:关于深拷贝和浅拷贝的运用 (创建实例对象)
浅克隆,通常只是对克隆的实例进行复制,但里面的其他子对象,都是共用的。: 深克隆,克隆的时候会复制它的子对象的引用,里面所有的变量和子对象都是又额外拷贝了一份。 克隆是为了增加元数据的完整不破坏性,这种方法会独立使用子对象。
3:!"".equals(content) // 一个非空判断语句 content的值不为空
4:padding margin
padding说的是控件内部的间隔逻辑,即控件里面的内容与控件自身边缘(上下左右)的距离,而margin说的是 控件自身与其他相邻控件(上下左右)之间的距离。
5:关于throws
throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主 函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。如下面例子所示:
static void pop() throws NegativeArraySizeException {
//定义方法并抛出NegativeArraySizeException异常
int [] arr = new int[-3];//创建数组
}
public static void main(String[] args) {//主方法
try {
pop(); //调用pop()方法
} catch (NegativeArraySizeException e) {
System.out.println("pop()方法抛出的异常");//输出异常信息
}
}
6:r.layout.**与r.id.** 引入布局文件和引入控件实例 一般是先引入布局在引入该布局中的控件实例
7:除了给按钮获取到布局控件时还有什么时候需要用到类型转换?
为什么要类型转换 1)findViewById(R.id.button).getClass().getName(); 2)Button button = (Button) findViewById(R.id.button);
button是view的子类但是就像车子有很多种,如果不指定是摩托车还是自行车的话就不知道到底 找的是哪种车,所以要转换。
什么时候需要转换:只要是返回值的类型和你需要的类型不一致或者是返回类型为父类但是你需要子类的时候就要强制类型转换
8:关于objiect Object 数据类型可以指向任意数据类型的数据,包括您的应用程序识别的任意对象实例。当您在编译 时不知道变量可能指向哪种数据类型时,就用 Object。
9:空字符串和null有什么区别: null代表内存中根本没有这个东西但是空字符串的话是占有一定空间的只是里面没有内容
10:.isEmpty()和.equals("")方法去判断空有什么区别? 仔细读官方的API: Returns true if the string is null or 0-length. 因为你从EditText返回的 是一个变量。如果这个变量本身为null值,那么你掉它的equals方法是要报错的。但是如果你调用TextUtils.isEmpty() 把这个变量作为参数传进去。只要这个参数为空或者为“”,都会返回真。所以,用官方给的更加严谨。而且。也十分方便。 因为你单独去判断你还不是要写一个if语句判断。返回的还是一个boolean值,为何别人铺好的路不走呢? 还有==null
The method makeText(Context, CharSequence, int) in the type Toast is not applicable for the arguments (new View.OnClickListener(){}, String, int) context的参数没弄正确要制定当前的类对象
11:@Override到底有什么用
@override有注释文档的作用,可有可无有点像鸡肋但它对于编程粗心的人可是个很人性化的功能 如果想重写父类的方法,比如toString()方法的话,在被重载的方法前面加上@Override ,这样编译的时 候系统可以帮你检查方法的正确性,如下
@Override public String toString(){...}这是正确的 如果将toString写成tostring @Override public String tostring(){...}编译器可以检测出这种写法是错误的,提醒你改正 而如果不加@Override public String tostring(){...}这样编译器是不会报错的,它会认为是你在类中加的新方法
12:什么叫做抽象类?
一种特殊的类,并且不能被实例化,这点和接口十分像。抽象类可以包括抽象方法,这是普通类所不能的。抽象方法 只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
13:this,super怎么用,有什么区别?
this一般是指当前对象 super指父类的对象 this:1)引用当前对象的方法时要用但是并不是必须2)当传入的参数和当前对象的参数相同则必须指明谁是谁
使用super:
class Person{
public int c;
String name;
private int age;
protected void setName(String name){
this.name=name;
}
protected void setAge(int age){
this.age=age;
}
protected void print(){
System.out.println("Name="+name+" Age="+age);
}
public class DemoSuper extends Person{
public void print(){
System.out.println("DemoSuper:");
super.print();
}
}
}
android(eclipse)编程中常见的java问题总结(四)的更多相关文章
- 并发编程中.net与java的一些对比
Java在并发编程中进行使用java.util.concurrent.atomic来处理一些轻量级变量 如AtomicInteger AtomicBoolean等 .Net中则使用Interlocke ...
- Unity3D游戏开发之C#编程中常见数据结构的比较
一.前言 Unity3D是如今最火爆的游戏开发引擎,它可以让我们能轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型的互动内容.它支持2D/3D游戏开发,据不完全统计,目前国内80%的手机游戏都 ...
- python编程中常见错误
python编程培训中常见错误最后,我想谈谈使用更多python函数(数据类型.函数.模块.类等)时可能遇到的问题.由于篇幅有限,我们试图将其简化,特别是一些高级概念.有关更多详细信息,请阅读学习py ...
- 跟着拉大锯大神学Android——网络编程中运行后台服务器端口占用问题
拉大锯网页地址:https://www.sunofbeach.net/u/1153952789488054272 跟着拉大锯大神学Android,在学到网络编程时,使用了大神搭建的用于学习的后台服务器 ...
- 网络编程中常见地址结构与转换(IPv4/IPv6)
1. sockaddr/sockaddr_in/in_addr (IPv4).sockaddr6_in/in6_addr/addrinfo (IPv6) struct sockaddr { unsig ...
- Eclipse编程中免除alt+斜杠,设置自动提示
用eclipse进行编程时,设置自动提示 .abcdefghijklmnopqrstuvwxyz@
- Java编程中的一些常见问题汇总
转载自 http://macrochen.iteye.com/blog/1393502 每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题.虽然一般 ...
- android: 多线程编程基础
9.1 服务是什么 服务(Service)是 Android 中实现程序后台运行的解决方案,它非常适合用于去执行那 些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使 ...
- Android UI编程之自定义控件初步——ImageButton
我想我们在使用一些App的时候,应该不会出现一些“裸控件”的吧.除非是一些系统中的软件,那是为了保持风格的一致性,做出的一些权衡.我这里并非是在指责Android原生的控件不好看,说实在的,我很喜欢A ...
随机推荐
- js event鼠标事件
1,鼠标焦点事件 <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...
- [转]v$parameter, v$parameter2, v$system_parameter, v$system_parameter2, v$spparameter区别
本文转自:http://blog.csdn.net/huang_xw/article/details/617389 1 v$parameter v$parameter显示的是session级的参数. ...
- 拼凑的宿主-host
开发两年之久,竟然不知道host这个词是什么意思.前些天有幸遇到了,就跟别人请教了.今天理絮一下.总比不知道强吧. 白话来说宿主就是一些框架运行机制运行时需要依赖的平台. 例如web开发常用的IIS, ...
- 第一个servet(用注解),不用web.xml
环境: idea 1.新建模块 2.在蓝色src下新建一个包com.test 3.在包下新建servlet 4.写代码 package com.test; import javax.servlet.S ...
- 归并排序——Java实现
一.排序思想 将两个或两个以上的一排序文件合并成一个有序文件的过程叫归并,而归并排序就是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将以有序的了序列合并,得到完全有序 ...
- ubuntu系统没有声音解决方法
好像装了个放视频的软件,就没有声音了.后面网上搜到了一个简单粗暴的办法,效果很明显,改变权限后直接就有声音了. -------------------------------------------- ...
- 深入理解读写锁—ReadWriteLock源码分析
转载:https://blog.csdn.net/qq_19431333/article/details/70568478 ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁.读锁可以在 ...
- 用JQ帮你实现动画导航 手风琴是导航与下拉导航
1.手风琴式导航,既可以适用于移动端也可使用与PC端 <!DOCTYPE html> <html> <head> <meta charset="UT ...
- ubuntu GITLAB完全导入SVN(提交历史,用户)项目
从SVN导入到GITLAB目前没有直接的方案,通常需要通过GIT转换:SVN –>GIT –>GITLAB.通过这种方式,将SVN的提交历史,用户信息一并导入到gitlab 注:本文只适用 ...
- SENNA
SENNA is a software distributed under a non-commercial license, which outputs a host of Natural Lang ...