快速学习Android开发知识点总结(磨砺营马剑威Android)
2019独角兽企业重金招聘Python工程师标准>>>
【威哥说】很多人在工作中不断的遇到瓶颈,想研究新的技术,却发现自己的基础不扎实,无法深入理解某一项技能的原理问题。这就需要大家能在工作之余稳固一下自己的基础知识了。有了比较完善的基础积淀才能事半功倍。 【正文】上篇介绍了Android和ios该如何选择的文章后,收到了很多同学的回复,统计下来选择Android的要多于ios。要学Android开发,必须学习java,下面这些知识点掌握了,Android就会学习的更快。
- 基本数据类型
整形:
byte 1 个字节
short 2 个字节
int 4个字节
long 8个字节
字符:
char 2个字节
浮点数:
float 4个字节
double 8个字节
布尔:
boolean 1个字节
2.java 7 新增二进制整数
以0b或者0B开头
3.java中字符时16位的Unicode编码方式,格式是'\uXXXX',其中xxxx代表一个十六进制整数
4.java中规定了正无穷大、负无穷大和零
正无穷大= 一个正数除以0
负无穷大= 一个负数除以零
0.0 除以0.0 或者 对一个负数开方 得到一个非数
在java中布尔类型只能是true和false
在java中没有多维数组
看似像C语言中的多维数组不是真正的数组,比如 a[3][4] , a[0] a[1] a[2] 是真实存在的,装的是地址,和c语言中动态分配为的数组一样
int [][] b = new int[3][4]
- Java中带包的编译方法
javac -d . Hello.java 会在当前目录下生成目录树
运行 java 包名字.类名字
Java多态中的对象的filed 不具有多态性,如 父类 对象 = new 子类(), 对象.field 是调用的父类的,即使子类中覆盖了该字段。
instanceof 运算符
格式: 引用变量名 instanceof 类名(或者接口) 他用于判断前面的对象是否是后面对象的类,子类、实现类的实例,是返回true,否者返回false
- Java 中基本数据类型和对应封装类之间的转化
int a = 1;
Integer A = new Integer(a);
a = A.intValue();
其他的类型也是这样的。
11.单例(singleton)类 例子
代码如下:
class Singleton
{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance()
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
public static void main(String[] args)
{
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}
12.final修饰的成员变量初始化问题
类Field: 必须在静态初始块中或声明该FIeld时指定初始值
实例Field:必须在非静态初始块中或声明该FIeld时指定初始值或构造器中声明
13.Final 变量必须显式初始化,系统不会对final变量进行隐式初始化
14.java会使用常量池来管理曾经用过的字符串直接常量,例如:String a = "java"; ,系统把常量字符串“java”存在常量池,当再次执行 String b = "java"; a == b 是true
15.final 方法不可以重写,final类不能被继承
如果用private 方法 和 final private 是一样的
若果是用final修饰的方法在子类中出现,那是子类新定义的,与父类没有关系
16.不可变类:创建后该类的Field是不可改变的。java提供了8个基本变量的包装类和string都是不可改变类。
17.缓存实例的不可改变类
代码如下:
class CacheImmutale
{
private static int MAX_SIZE = 10;
private static CacheImmutale[] cache = new CacheImmutale[MAX_SIZE];
private static int pos = 0;
private final String name;
private CacheImmutale(String name)
{
this. name = name;
}
public String getName()
{
return name;
}
public static CacheImmutale valueOf(String name)
{
for(int i = 0; i < MAX_SIZE; ++i)
{
if(cache[i] != null && cache[i].getName().equals(name))
return cache[i];
}
if(pos == MAX_SIZE)
{
cache[0] = new CacheImmutale(name);
pos = 1;
}
else
{
cache[pos++] = new CacheImmutale(name);
}
return cache[pos -1];
}
public boolean equals(Object obj)
{
if(this == obj)
return true;
if(obj != null && obj.getClass() == CacheImmutale.class)
{
CacheImmutale ci = (CacheImmutale)obj;
return name.equals(ci.getName());
}
return false;
}
public int hashCode()
{
return name.hashCode();
}
}
public class CacheImmuteTest
{
public static void main(String[] args)
{
CacheImmutale c1 = CacheImmutale.valueOf("Hello");
CacheImmutale c2 = CacheImmutale.valueOf("Hello");
System.out.println(c1 == c2);
}
}
用缓存实例要看某个对象的使用频率,若重复使用那就利大于弊,若不经常使用那弊就大于利
还有java提供的java.lang.Integer 创建数值在-128-127之间的数采用缓存机制的
Integer in2 = Integer.valueOf(6);
Integer in3= Integer.valueOf(6);
in2 == in3 is true;
- static 和 abstract 不能同时修饰一个方法,没有类抽象方法
19.一个类可以又一个父类,实现多个接口,接口中Filed是public 、static、final的,方法是public abstract的
20.非静态内部类的方法访问某个变量,搜索顺序为:先内部类中方法内-> 内部类 -> 外部类中如果都找不到则出现编译错误
代码如下:
import java.util.*;
public class DiscernVariable
{
private String prop = "外部类的实例变量";
private class InClass
{
private String prop = "内部类的实例变量";
public void info()
{
String prop = "局部变量";
System.out.println("外部类的field值:" + DiscernVariable.this.prop);
System.out.println("内部类的field值:" + this.prop);
System.out.println("局部变量的值:" + prop);
}
}
public void test()
{
InClass in = new InClass();
in.info();
}
public static void main(String[] args)
{
new DiscernVariable().test();
}
}
21.非静态内部类不能有静态方法、静态Field、静态初始化块
22.在外部类之外访问内部类
访问非静态内部类:outclass.Inclass varname = new outclass().new InClass();
访问静态内部类: outclass.Inclass varname = new outclass.Inclass();
代码如下:
import java.util.*;
class Out
{
class In
{
public In()
{
System.out.println("非静态内部类构造器");
}
}
}
public class CreatInnerInstance
{
public static void main(String[] args)
{
Out.In in = new Out().new In();
/*
以上的代码可分开写为:
Out.In in;
Out out = new Out();
in = out.new In();
*/
}
}
class SubClass extends Out.In
{
//显示定义SubClass的构造器
public SubClass(Out out)
{
//通过转入的Out对象显示调用In的构造器
out.super();
}
}
代码如下:
import java.util.*;
class StaticOut
{
static class StaticIn
{
public StaticIn()
{
System.out.println("静态内部类构造器");
}
}
}
public class CreatStaticInnerInstance
{
public static void main(String[] args)
{
StaticOut.StaticIn in = new StaticOut.StaticIn();
/*
以上的代码可分开写为:
StaticOut.StaticIn in;
in = new StaticOut.StaticIn();
*/
}
}
class SubClass extends StaticOut.StaticIn
{
//无须创建内部类实例
} 更多内容关注微信公众号mjw-java或访问www.moliying.com
转载于:https://my.oschina.net/moliying/blog/736388
快速学习Android开发知识点总结(磨砺营马剑威Android)相关推荐
- volley浅析(磨砺营马剑威Android)
2019独角兽企业重金招聘Python工程师标准>>> [威哥说]Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.Volley特别适合数据量不大但是 ...
- android开发人员要求_如何成为一名Android开发人员
android开发人员要求 An Android Developer is somebody who creates our lives simple by creating a correspond ...
- Android开发环境搭建全程演示(jdk+eclip+android sdk)
Android开发环境搭建全程演示(jdk+eclip+android sdk) http://files.cnblogs.com/Bany/Android%E5%BC%80%E5%8F%91%E7% ...
- android开发板只有网口和串口如何使用android studio进行调试
android开发板只有网口和串口如何使用android studio进行调试 1.要先准备一条串口线,或者串口转usb的线,用于在pc端与开发板端建立连接. 2.要下载一个在pc端运行的超级终端,我 ...
- Android 开发知识点总结
很可能下一份工作就不是从事 Android 了,现在的确不在做了[微笑],在做 Android 开发的这段时期里还是总结了很多的基础知识的,所以后续还是会有几篇会一一上传.惭愧,本人目前还是菜B一枚, ...
- 安卓开发者网站!Android开发岗还不会这些问题,Android面试题及解析
前言 最近发现大家都喜欢看面试相关的文章,我也跟一波风,总结了一下我面试中所遇到的问题总结,分享一下面试中被问的最多的一些问题. 希望对正在找工作的朋友提供一些帮助. 好了话不多说,进入正题. 面试部 ...
- android开发环境搭建(ubuntu15.04+jdk8+eclipse+android sdk)
开始学习android开发,首先对其环境对搭建比较重要.平台可以选择window/linux/mac等,这里,我选择ubuntu系统,方法比较原始,当然也可以直接用google提供的android s ...
- 35岁以上的Android开发,都去了哪儿?,Android开发面试宝典
一开始大家都对她转行这件事儿特别不理解,但也许正是一个中年人在职场上的尴尬,很多人降薪也找不到合适的工作,要跟年轻人拼加班拼体力更是不可能. 而卖险对年龄.行业都没有要求,门槛低,成了很多人不得已的选 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
最新文章
- 股市复盘:本周交易数据分析
- mysql 5.1.61_MySQL数据库之将Mysql 5.1.61升级为mysql 5.6.19
- python找出值为nan_Python Numpy:找到list中的np.nan值方法
- python标准库介绍——4 string模块详解
- python实习做什么工作-实习工作 - python挖掘 - 博客园
- mysql线上问题之Lock wait timeout exceeded; try restarting transaction
- Docker之DockerFile讲解
- sparql查询mysql_SPARQL常用查询
- 如何在从事前端两年,得到20+K的offer
- 深度学习技术干货免费听,AirPods2任性抽...520有场AI峰会不可错过!
- java迭代法求圆周率用梯形_感悟数学“近似计算”之美——“望星楼”里的圆周率...
- 是否,是否,总是富肥穷瘦?(文末上周投票公布)
- AspUpload组件的方法中文说明
- 大数据Spark面试题
- VRRP的工作原理及运用
- 如何在Windows上启用JavaScript
- 【人工智能】2.博弈问题、博弈搜索策略
- [转载]自动机器学习(AutoML)领域论文合集
- 排球分组循环交叉编排_【排球】二青会体校组男子排球(B组)预赛落幕 海口队顺利晋级决赛...
- dnw for linux(pc)