android基础——java

要想学好android,就得精通java,其实java的美,只有深深的体会后才能发现,语言的奥妙,现在我就把我理解的java总结一下,她(java)可是很害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的,所以大家不要喷

1.java的定义:是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和 安全性;

2.java程序结构:方法—>类—>源文件(.java),对象(类是对象的蓝图)的状态和行为分别由类的实例变量和方法来表示;

3.变量与数据类型

(1) 变量:可变的量;常量:不可变的量;
(2) 变量命名规范:首字母是英文字母,$或者下划线,不能用数字开头,有字母数字下划线组成,做到(见名知意、不用中文、首字母不大写,用驼峰命名法、不用java关键字)
(3)定义变量:每个变量必须属于一个变量类型
(4) 数据类型分为3种:基本数据类型、引用数据类型和自定义数据型

基本数据类型有8种:byte(1字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)、 char(1字节)、boolean(1字节或4字节)

引用数据数据类型:String

注意:防止溢位(大的数据类型不能强制转换成小的),注意“==”在基本数据(值是否相同)和引用(空间对象是否相同)数据的差别

4.java三大特性封装、继承、多态

(1)封装:把实例变量(状态)标记为私有,并提供方法(行为)来控制动作

(2)继承:extends继承父类的方法,可以覆盖(方法不能变)也可以重载(可以改变参数),但是Java只支持单根继承(public会被继承、private不会被继承)

(3)多态:将参数声明为父类型,Animal-((父类) a1 = new Dog()-(子类);

5.接口和抽象类
(1)abstract
编译器不会初始化抽象类,抽象类除了被继承意外是没有目的、没有值的。

抽象的类预示着一定被extends,抽象的方法预示着一定被覆盖(抽象的方法没有方法体,直接();结束)

继承抽象类的继承类要实现所有的抽象类方法

(2) inlerface

可以解决多继承的问题,接口的方法一定是抽象的

6.关键字和一些常用方法
(1)关键字:
static:修饰的变量称为静态变量,又称为类变量;
静态变量定义在方法外;
静态变量和静态方法都是从磁盘加载到内存后被创建,与类同同生同死;
静态变量又称类的成员变量,在类中是全局变量,可以被类的所有方法调用;
静态变量由jvm自动初始化。

final
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
Math的一些方法:Math.abs(-10)取绝对值;
Math.pow(2,3)指数;Math.sqrt(16)取平方根;
Math.floor(n)去掉小数部分;Math.round(23.5)取四舍五入;
Math.random()取0和1直接随机数值;

String常用的一些方法:lenght();tocharArray();
charAt(int i);getBytes()字符串与byte的转换,
indexOf(),trim()去掉字符串空格,
subString()取子字符串;
toLowerCase()和toUpperCase()大小写转换;
endsWith()和startWith()判断字符串开头结尾字符;
replace(),contains();
ArrayList(对象)的方法有:add(Object o)向list中加入对象参数,
remove、contains(Object o)匹配对象,isEmpty(),
indexOf(Object o)返回参数的索引或-1,size(),
get(int index)返回当前索引参数的对象。

7.异常处理

try…catch…finally
这里写图片描述

所有的异常都有一个共同父类Throwable(代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性);她有两个重要的子类:Exception(异常,是程序本身可以处理的异常)和 Error(错误,是程序无法处理的错误)

常见的异常有
(1). runtimeException子类:
1、 java.lang.ArrayIndexOutOfBoundsException
数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
2、java.lang.ArithmeticException
算术条件异常。譬如:整数除零等。
3、java.lang.NullPointerException
空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等
4、java.lang.ClassNotFoundException
找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。
5、java.lang.NegativeArraySizeException 数组长度为负异常
6、java.lang.ArrayStoreException 数组中包含不兼容的值抛出的异常
7、java.lang.SecurityException 安全性异常
8、java.lang.IllegalArgumentException 非法参数异常
(2).IOException
IOException:操作输入流和输出流时可能出现的异常。
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常
(3). 其他
ClassCastException 类型转换异常类
ArrayStoreException 数组中包含不兼容的值抛出的异常
SQLException 操作数据库异常类
NoSuchFieldException 字段未找到异常
NoSuchMethodException 方法未找到抛出的异常
NumberFormatException 字符串转换为数字抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IllegalAccessException 不允许访问某类异常
InstantiationException 当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常
8.文件的输入输出
文件分为两种,一种是文本文件,文本文件的内容以16 bit表示(2 byte),另一种为非文本文件(流文件),以8 bit表示(1 byte),比如图片、声音文件等等。这两种文件读写的一个很大的区别在于,文本文件读写单位是字符,它是两个字节一组的组合,是可以解析成字符的,而流文件每个读写单位为一个子节,单独的一个字节是没有办法解析成字符的,所以处理上有很大的不同

文件读写所有的类都在类包 java.io 中,文件读入一般使用字符input或者reader,文件写出一般使用out或者writer

流:它是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。
文本文件读入器:Reader。
文本文件写出器:Write。
流文件读入器:InputStream。
流文件写出器:OutputStream。
而文件类File主要是用于创建文件对象,这是一个有关文件名及目录名的类:File 类独立于系统平台,利用构造函数
File( String path)、
File(String path, String FileName)、
File(File dir, String name) 等可以创建出File 对象,再利用canRead() 、canWrite()、 getParent()、 getPath()等成员函数实现对文件的各个属性的操作,以实现文件与目录的管理功能。
要点:File 类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法,可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等文件与目录的管理功能。
PipedReader
FileWriter
DataOutputStream
java.lang.Object
InputStream ect
OutputStream ect
FileInputStream ect
RandomAccessFile ect
PipedInputStream ect
FilterInputStream ect
DataInputStream ect
BufferedInputStream ect
FilterOutputStream ect
PipedOutputStream ect
FileOutputStream ect
BufferedOutputStream
File
Reader
InputStreamReader ect
BufferedReader ect
Writer
OutputStreamWriter er ect
BufferedWriter ect
FileReader
PipedWriter
9.网络与线程
在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:
同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回;
异步:它的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者;
阻塞:它的调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回;
非阻塞:它和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

java实现多线程,有两种方式,一种是继续Thread类,另外一种是实现Runable接口

class 类名 extends Thread{
public void run(){
// other code…
}
}
class 类名 implements Runnable{
public void run(){
// other code…
}
}

其实Thread中的run方法调用的是Runnable接口的run方法,从设计模式的角度来看是属于代理模式的

有些资源是从网上收集的,如有雷同,敬请原谅,谢谢谅解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记住我的名字啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值