文档章节

小黑小波比.极客学院.android自学笔记

BobbyLou
 BobbyLou
发布于 2015/05/14 15:57
字数 17392
阅读 22
收藏 0

1_第1阶段|环境搭建

2_第2阶段|Java基础

1_Java语言基础-计算机进制转换

1_计算机系统进制概述

概述:

1.数值是用一组固定的符号和同意的规则来表示数值的方法.
2.计算机底层使用的数制是二进制.
3.用Java编程使用的是十进制.Java底层仍使用二进制.
4.计算机常用的数制还有八进制和十六进制.

十进制:


十进制的基本数字0~9 逢十进位.
10称作"基数" 10^n(10的n次幂)被称作"权".
10000=1x10的4次方
...
...
...
1=1x10的0次方

示例:
23678(10进制) = 2*10000+3*1000+6*100+7*10+8*1
                         =2*10^4+3*10^3+6*10^2+7*10^1+8*10^0
                         =23678

二进制:

二进制的基本数字是0和1,逢二进位.
2称作"基数" 2^n(2的n次方)被称作"权".
1=1x2的0次方
...
10000000=1x2的7次方

示例:(1111)2=(______)10
(1111)2=1*2^3+1*2^2+1*2^1+1*2^0=8+4+2+1=15

十六进制:

1.基本数字:0-9 A-F
2.特点:逢六十进位.
3.十六进制是二进制的简写,方便专业人员书写二进制数据.
4.16进制的基数为16,权为16^n(16的n次方)
5.在Java代码中十六进制数用0X或者0x做前缀(0是数字零,而不是字母o)

0x1000=1x16的3次方
...
0x1=1x16的0次方

示例:(5E)16=(_______)10
5*16^1+14*16^0=80+14=94

2_十六进制与其它进制的转换

(41)16=(______)10
解:4*16^1+1*16^0=64+1=65
(41)16=(______)2
解:(0100 0001)2
说明:16进制的1位数代表2进制的4位数.

3_二进制与其它进制的转换

二进制转十进制
(10110)2=(______)10
解:1*2^4+1*2^2+1*2^1=16+4+2=(22)10
二进制数转十六进制
规律:四位二进制相当于一位十六进制数.示例:
(11010110)2=(______)16
1101 0110=((1*2^3+1*2^2+1*2^0)(1*2^2+1*2^1))16=((8+4+1)(4+2))16=(D6)16

示例
已知:计算机的基本存储单位是字节(byte),一个字节有8位
8位2进制的最大值(11111111)2
编写程序,计算并显示8位2仅指数的最大值,即将(11111111)2转换为10进制数.

解题思路(1):
(11111111)2=1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0
System.out.println(Math.pow(2,7)+
												  Math.pow(2,6)+
												  Math.pow(2, 5)+
												  Math.pow(2, 4)+
												  Math.pow(2, 3)+
												  Math.pow(2, 2)+
												  Math.pow(2, 1)+
												  Math.pow(2, 0));


解题思路(2):
(11111111)2=(100000000)2-1
System.out.println(Math.pow(2, 8)-1);


4_十进制与其它进制的转换

1.十进制转化为二进制数

规律:不断除以2,保留余数,商为0时不再除2.将所有余数倒序排列.
示例:(13)10=(______)2
13/2  6 余数1
6/2    3 余数0
3/2    1 余数1
1/2    0 余数1

结果:(13)10=(1101)2

2.十进制转化为十六进制数

规律:不断除以16,保留余数,商为0时不再除16.将所有余数倒序排序.
示例:(138)10=(______)16
138/16 8 余数10
8/16     0 余数8
结果(138)10=(8A)16

2_Java语言基础知识入门:变量与数据类型

1_数据类型初阶

1.概述

1.Java定义了基本数据类型、引用数据类型和自定义类型。
2.本主题将介绍Java的八种基本数据类型和引用数据类型中的String类型
基本数据类型
类型 占用空间 取值范围
byte(字节型) 1字节 -128~127
short(短整型) 2字节 -2^16~2^16-1
int(整型) 4字节 -2^31~23^1-1
long(长整型) 8字节 -9223372036854775808~9223372036854775808
float(单精度) 4字节 -3.4028235*10^38~3.4028235*10^38-1
double(双精度) 8字节 -1.797693*10^308~1.797693*10^308
char(字符型) 1字节 0~65535
boolean(布尔型) 1或4字节 false、true

















2.栈空间

1.栈空间存取数据的效率高
2.栈中的数据按“先进后出”的方式管理
3.栈控件存储空间较小,不能存放大量的数据。
4.JVM将基本类型的数据存放在栈控件。

3.堆空间

1.堆空间存取数据的效率最低;
2.数据存放的位置随机分配;
3.堆空间存储数据的空间大,能存放大容量的数据。

2_变量的定义和变量使用的原因

1.什么是变量

1.变量就是可变的量。
2.常量就是不可变的量。
3.字面量:Java的变量和常量中存放的具体的数据成为字面量。
计算机的高级语言普遍使用变量来管理内存中存储的数据。

3_变量的命名、定义和初始化

1.变量的命名

(1)首字母是英文字母、$或下划线,用字母、数字、下划线组成;
(2)变量的命名遵循 见名知意的原则.
(3)Java变量名建议不用中文.
(4)变量名首字母建议不用大写字母.
(5)用驼峰命名法命名多个单词组成的变量名
例如:sumScore
(6)变量名不建议使用Java关键字

2.变量的定义

定义变量
每个变量必须属于一种数据类型.
类型 变量名1,变量2,....,变量n;
示例:
byte score://保存单科分数
short age;//保存年龄
int sumScore;//保存总分
long fileSize;//保存文件长度
float x,y;
double result;//保存运算结果
char sex;//保存性别
boolean isContinue;//表示是否继续
String name;//表示姓名

4.变量的初始化

变量的初始化
age=23;
score=70+5;
i=10/5;
result=Math.pow(2,5)+3.5;
sex='男';
isContinue=true;
name="张"+"大飞";

4_用变量简化计算

示例 保存中间结果,用分步骤计算减缓复杂运算计算(sqrt(20)+sqrt(10))/(sqrt(20)-sqrt(10))=
要求:显示结果保留小数点后1位,即对小数点后第2位四舍五入.运行效果如下图所示;

5_用变量保存多种类型的数据

示例:不同类型的变量存放对应类型的数据,变量的值可以改变.

String name="张飞";
		char sex = '男';
		short age=35;
		float height = 1.99f;
		String type="豪放的";
		System.out.println("嗨,大家好,俺叫"+name+",今年"+age+"岁,俺是一个"+type+sex+"士");
		
		name="王菲";
		sex='女';
		age=33;
		height=1.69f;
		System.out.println("嗨,大家好,俺叫"+name+",今年"+age+"岁,俺是一个"+type+sex+"士");


课堂练习:
已知:手机品牌:小米3
手机操作系统:Android4.3
cpu数量:2(双核)
价格(元):1999.0
请定义变量存放以上四个数据并打印结果,如下所示:


String pname="小米3",system="android";
		short cpu=2;
		double price=1999.0;
		System.out.println("手机品牌:"+pname+"\n操作系统:"+system+"\ncpu数:"+cpu+"\n价格:"+price);






6_变量的作用域

1.Java用一堆大括号作为语句快的范围,称为作用域
2.作用于中的变量不能重复定义.
3.离开作用域,变量所分配的内存空间将被JVM回收.

示例1.
对于以下代码.若将朱是语句去掉,结果怎样?
public static void main(String[] args){
	{
		String name="张三";
		//String name="张三";
	}
}
提示重复局部变量名称

示例2
对于以下代码,第12和第13行是否会有语法错误?
public class T1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			{
				String name="张三";
				System.out.println(name);
			}
			String name="张三";
			System.out.println(name);
	}
}

正常
示例3
对于以下代码,将注释语句去掉,结果如何?
public class Test05 {

	public static void main(String[] args) {
		String name ="张飞";
		System.out.println(name);
		{
			String name="王菲";
			System.out.println(name);
		}
	}

}

提示重复局部变量名称

7_基本数据类型的包装类

1.概述

Java为基本数据类型提供了对应的类,这些类称作包装类.如下表所示:

包装类

包装类的类型

说明

Byte类

byte类型的包装类

Short类

short类型的包装类

Integer类

int类型的包装类

Long类

long类型的包装类

Float类

float类型的包装类

Double类

double类型的包装类

Character类

char类型的包装类

Boolean类

boolean类型的包装类



















2.为什么使用包装类

1.包装类中封装了一些很实用的方法和常量.
例如:Byte.MIN_VALUE是Byte类中的一个常量,存放了byte类型数据的最小值
2.包装类在集合中用来定义集合元素的类型.

3.包装类的常用方法和常量

1.Interger.MIN_VALUE:int类型的最小值:-2^31
2.Interger.MAX_VALUE:int类型的最大值:2^32-1
3.int Integer.parseInt(String sInteger);
作用:将字符串类型的整数转换为int类型的数据.
4.String Integer.toBinaryString(int value);
作用:将十进制数转换为二进制,返回结果String类型.
5.String Integer.toHexString(int value);
作用:将十进制数转换为十六进制,返回结果String类型.

示例
1.获取byte类型的最大、最小值,并测试Byte.parseByte方法。
2.获取int类型的最大、最小值,并测试Integer.parseInt、Integer.toBinaryString等方法
public class Test06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
		System.out.println(Byte.parseByte("108")+10);
		
		System.out.println(Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
		System.out.println(Integer.parseInt("50000")+5);
		System.out.println(Integer.toBinaryString(16));
		System.out.println(Integer.toHexString(16));
	}

}


8_二进制补码

1.概述

1.计算机系统的内部以二进制形式存储数据。
2.在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。

2.补码规则

1.在计算机系统中,数值一律用二进制的补码来存储.
2.二进制的最高为是符号位,0表示正数,1表示负数.
3.正数的值是其本身,负数的值是最高位(符号位)不变,其它位逐位取反,再加1.
例如:(1101)2
         0010逐位取反
         0011 加1
         (1101)2=-3
4.两数相加,若最高位(符号位)有进位,则进位被舍弃.
例如:4位二进制补码中,5-3的结果是2
  0101 5
+1101 -3
_______________
  0010 2

3.为什么使用补码

1.可以将符号位和其它位统一处理;
2.最高位不再表示数值,而是作为符号位,证号将数值折半,即一半是0至正数,一半是负数.
例如:
(1)4位二进制数共有16个数,用补码表示,则一半是0~7,
一半是-1~8.
(2)8位二进制共有256个数,用补码表示,则一半是0~127,一半是-1~-128.
3.减法页可按加法来处理:
例如:7-3,可以表示7+(-3),二进制表示为;
   0111 7
+ 1101 3
-----------------
    0100 4

4.补码运算的特征

1.计算机中正数和负数的关系是取反加一.
示例,在四位二进制数中,已知3的二进制值0011,若要求-3,则
0011 3
1100 逐位取反
1101 +1
则-3的二进制值是1101

2.补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出.
示例 四位二进制的补码运算中,请计算5+4的结果
   0101 5
+ 0100 4
_________
   1001 -7

3.4位二进制补码最多能表示2^4(16)个数,数的范围是-8~7
4.8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127
5.16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767
6.32位二进制补码最多能表示2^32个数,数的范围是-2^31~2^31-1

5.补码运算的原理

正数+负数=模.
模:某种类型数据的总数,例如:
4位二进制的模是2^4=16
8位二进制的模是2^8=256
16位二进制的模是2^16=65536
32位二进制的模是2^32=4294967296

示例 在4位二进制中,7+(-7)=16
   0111
+ 1001
______
 10000
因此,负数= 模-正数,这就是逐位取反加1的原因
-7=16-7
10000
-00111
______
01001

9_整数类型

1.Java有四中整数类型:byte、short、int和long.

2.Java默认整数计算的结果是int类型。

3.整数的字面量是int类型。

4.若字面量超过int类型的最大值,则字面量是long类型,

那么后面要用L(或l)表示该值是long类型。


示例将字面量30亿赋值给一个long类型的变量:

long longValue=3000000000L;

3.java底层byte和short按照32位(int类型)计算。

示例.以下注释语句去掉,结果是?

public class T1 {

	public static void main(String[] args) {
		byte b1=5;
		//byte b2=b1+3;
	}
}


10_浮点类型

1_概述

1.浮点类型用于表示小数的数据类型.
2.浮点数原理:页就是二进制科学计数法
3.Java的浮点类型有float和double两种.
4.Java默认浮点类型计算的结果是double类型,字面量也是double类型.
若要给float类型的变量赋字面量的值,则要在字面量后面加F(或f)

示例 float f=5.3;将会出现编译错误,正确的赋值是:
float f = 5.3f;

2_浮点类型的科学计数法

1.十进制浮点数科学计数法:219345=2.19345*(10^5)
2.二进制浮点数科学计数法:10111=1.0111*(2^100)
以2.19345*(10^5)为例介绍如下概念:
尾数:2.19345
指数:5
基数:10

3_float类型

1.float类型共32位,1位为符号位,指数8位,尾数23位.
2.float的精度是23位(既能精确表达23位的数,超过就被截取了).
小数是以尾数长度来表示精确度的,比如pi=3.1415的精度是4位.
3.float存储数据的范围大于int类型,但精度比int要小,
因为int的精度是31位.

4_double类型

1.double类型,1位符号位,11位指数,52位尾数.
2.double范围远远大于long.但double精度不如long(long存储数据的位数是63位).

5_浮点运算特点

1.浮点运算就是实数运算,由于计算机只能存储整数,所以实数都是约数,这样浮点运算是很慢的而且会有误差.
浮点运算误差,如下代码所示:
public class Test09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double d=2.6;
		double result=d-2;
		System.out.println(result);
	}

}




11_字符类型

1.概述

1.char类型的字面量可以是一个英文字母、字符或一个汉字,并且用单引号包括。
例如:'A' '3' 'a' '\n'
2.Java底层使用一个16位的整数来处理字符类型,该数值是一个字符的unicode编码值.

2.Unicode编码

1.unicode编码是全球范围内的编码方法.
2.unicode编码的英文部分是ASCII码兼容(ASCII表示范围0~128),同时应为字符和数字是连续编码的.
3.Java在处理char类型的数据时,在底层是按unicode码来处理的.
4.编码是什么?
计算机硬件系统只能用0和1表示数,我们认为地做了规定,某个数还可以表示一个字符.
例如:65代表的字符是A

示例-1
编写Java代码在控制台打印出unicode码从0~127的所有字符:

12_转义符

1.转义符

转义字符是"\",通过转义字符,可表示一些特殊的字符.
例如:
'\n'表示回车
'\t'表示制表位字符,一个制表符表示向右跳8-10个字符
'\\'表示\
'\''表示单引号
'\"'表示双引号
'\u4e2d'表示unicode编码对应的字符(汉字:中).

示例
在输出命令中打印转义符.
public class Test11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print('\u4e2d'+":");
		System.out.println(4*Math.pow(16, 3)+14*Math.pow(16, 2)+2*16+13);
		System.out.println((char)20013+":"+20013);
		System.out.println("我和\n你不在一行哟");
		System.out.println("\t我在这里显示哟!");
		System.out.println("System.out.println(\"双引号页显示出来哟!\");");
	}

}



13_布尔类型的概念和用法

1.什么是布尔类型

boolean类型用来表示肯定或否定两种可能.

2.为什么使用布尔类型

布尔类型常用在分支语句、循环语句中.

3.布尔类型的取值范围

true:表示肯定意义;
false:表示否定意义;

4.布尔变量的定义

boolean isPass;

5.布尔变量的初始化

boolean isPass=true;
isPass=59>=60;

示例 编程用布尔变量表示考试是否几个,运行效果如下图所示:
public class Test12 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		boolean isPass;
		isPass=true;
		System.out.println("考试通过:"+isPass);
		isPass=false;
		System.out.println("考试通过:"+isPass);
		isPass=65>=60;
		System.out.println(65+"分及格:"+isPass);
	}

}



14_小类型向大类型转换

1.概述

例如:byte b1=5;
byte b2=b1+10;

2.小类型向大类型转换

1.小类型向大类型转换会自动完成,即不需要程序员编写额外的代码,由JVM负责.
提示:自动类型转换页叫"隐式类型转换".
2.自动转换的规则:符号位会自动扩展,负数补1,正数补0.
3.自动类型转换包含以下情况:
(1)byte->short->int->long->float->double
(2)int和char类型的数据在某些情况下可以自动相互转换.
4.整数到浮点数转换会损失精确度.

示例int类型的数据自动转换为long类型的数据
public class Test13 {

	public static void main(String[] args) {
		int i=-2;
		long l=i;
		System.out.println(i+":"+Integer.toBinaryString(i));
		System.out.println(l+":"+Long.toBinaryString(l));

	}

}

注意:toBinaryString()表示以二进制的形式表示

15_小类型向大类型转换案例

1.概述

1.小类型向大类型转换一般情况下是安全的.
2.当小类型的精度高于大类型时要注意精度丢失的隐患.

2.int类型转换为float类型

示例-1int类型转换为float类型丢失精度案例.

public class Test14 {

	public static void main(String[] args) {
		int i =0x1000001;
		float f=i;
		System.out.println(Integer.toBinaryString(i)+":"+i);
		System.out.println(Integer.toBinaryString((int)f)+":"+f);

	}

}

3.long转换为double

示例2,long类型转换为double类型的精度丢失案例

16_大类型向小类型转换

1.概述

1.强转类型-简称强转
例如:
byte b=5;
b=(byte)(b+10);
b=5+10无需类型转换
2.强制类型转换时,要注意边界数风险问题


2.案例

示例-1 大类型转换小类型时,源数据的数据位变为目标数据的符号位.
int i =129;
byte b=(byte)i;
变量b的值是多少?
10000001=129
01111111 逐位取反再加1
-127

示例-2大类型的数据超过了小类型的位数示例.
int i =257;
byte b=(byte)i;
变量b的值是多少?
1,0000,0001=257
0000,0001最高位抛弃
1

17_int类型与char类型的转换

1.概述

Java对char类型的数据在底层是按int类型来处理的.

2.int类型与char类型在赋值时自动转换

示例-1 int类型与char类型在赋值时自动转换
public class Test16 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char c =65;
		int i='B';
		System.out.println(c+","+i);
	}

}


3.字符类型的数据可进行数值计算

示例-2字符类型的数据类型

public class Test17 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char c ='A';
		int i =c+1;
		c=(char) (c+1);
		System.out.println(c+":"+i);
	}

}


18_通过args的数组获取数据

1.概述

通过main方法的args数组可以从控制台获取一组字符串数据.

2.案例

给main方法的args数组输入两个整数,对这两个整数进行四则运算,结果如下所示:
public class Test18 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a=Integer.parseInt(args[0]);
		int b=Integer.parseInt(args[1]);
		System.out.println(a+"+"+b+"="+(a+b));
		System.out.println(a+"-"+b+"="+(a-b));
		System.out.println(a+"*"+b+"="+(a*b));
		System.out.println(a+"/"+b+"="+(a/b));
	}

}

运行的时候在,"Run"图标的旁边的小的向下箭头,点击它,然后选择"Run Configurations",选择对应类,例如"Test18",然后点击"Arguments"
在Program arguments:输入 10 3,最后点击"Run"按钮.最后控制台输出结果

19_通过Scanner从控制台获取数据

1.概述

1.Scanner类用于扫描从控制台输入的数据,可以接收字符串和基本数据类型的数据
2.Scanner类位于java.util.Scanner包中

2.Scanner类的常用方法

1.String next();
作用:接收控制台输入的一个字符串。
2.String nextLine();
作用:接收控制台输入的一个字符串。
3.int nextInt();
作用:接收控制台输入的一个int类型的数据。
4.double nextDouble();
作用:接收控制台输入的一个double类型的数据。
5.boolean nextBoolean();
作用:接收控制台输入的一个字符串。
6.输入char类型的数据
Scanner类没有提供直接输入char类型的方法,可以通过charAt()方法从next()或nextLine()获取输入的字符。
char String.charAt(int index);
作用:从字符串中获取指定下标的字符,下标从0开始。
例如:“abc”.chartAt(0)的结果是a.
例如:“abc”.chartAt(1)的结果是b.
例如:next().charAt(0);从控制台输入的字符串中获取第一个字符。


3.使用步骤

步骤1.创建Scanner类的一个对象。
示例:
Scanner scanner = new Scanner(System.in);

步骤2、通过scanner调用next等方法,接收控制台输入的数据。
示例:
System.out.println("姓名:");
String name=scanner.next();

20_控制台输入数据的案例

示例 从控制台输入多种类型的数据
通过控制台输入一个人的姓名、性别、年龄、身高和性格,然后让该人和大家做自我介绍
import java.util.Scanner;
/**
 * 
 * 张飞 男
 */

public class Test18 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//步骤1、创建Scanner对象
		Scanner scanner = new Scanner(System.in);
		//步骤2、向控制台输出文本
		System.out.println("姓名:");
		//步骤3、接收输入的姓名字符串
		String name=scanner.next();
		System.out.println("性别:");
		char sex = scanner.next().charAt(0);
		System.out.println("年龄:");
		int age=scanner.nextInt();
		System.out.println("身高:");
		double height=scanner.nextDouble();
		System.out.println("性格:");
		String type=scanner.next();
		System.out.println("嗨,大家好,我叫:"+name+",今年"+age+"岁,身高"+height+"米,我是一个"+type+"的男士");
	}

}


21_变量的自加、自减、自乘、自除运算

1.概述

1.自增是一个变量在原有值基础上再增加指定值。

2.自减是一个变量在原有值基础上再减去指定值。

3.自乘是一个变量在原有值基础上再乘以指定值。

4.自除是一个变量在原有值基础上再除以指定值。

2.自增1

1.整型变量的自增:

int i =0;

i=i+1;

2.字符串类型变量的自增

String space="";

space=space+"";


3.自增运算的简写形式:

1)先加1:++i

示例:int i=1;

System.out.println(++i)输出结果是2,变量i的值是2

String space="";

space+=" ";

2)后加1:i++

例如:

int i =1;

System.out.println(i++)输出结果是1,变量i的值是2

3.自增n

自增n:i+=n

等效于i=i+n

示例:i+=5;

4.自减1

1.先减1:--i

示例:int i =1;

System.out.println(--i)输出结果是0,变量i的值是0

2.后减1:i--

例如:

int i=1;

System.out.println(i--);输出结果是1,变量i的值是0

5.自减n

自减n:i-=n

等效于:i=i-n

示例:i-=5;

6.自乘

自乘n:i*=n

等效于:i=i*n

示例:

double d=2;

d*=5;

7.自除

自除n:i/=n

等效于:i=i/n

示例:

double d=15;

d/=5;


22_交换两个变量的值

1.概述

两个变量值呼唤是基本的算法,在排序等算法中应用。

2.解法(1)

已知:
int a=100;
int b=10;
交换两个变量值,使得a=10,b=100
错误代码:
a=b;
b=a;
正确代码:
int c=a;
a=b;
b=c;

3.解法(2)

不借助第三个变量,仅在两个变量之间交换值。
步骤1 a=a+b;
结果a=a+b,b=b
步骤2 b=a-b;
结果:a=a+b,b=a
步骤3 a=a-b;
结果:a=b,b=a

23_Java的错误类型

程序的错误分为编译期语法错误、运行期异常错误和运行期逻辑错误。
1.编译期语法错误可以借助Eclipse的帮助方便地定位错误,并进行修改.
2.运行期异常
系统会提示错误的类型和出错的位置.
3.逻辑错误是指程序可以编译运行,但程序执行的结果却不是预期的效果.

24_Debug调试

1.概述

1.调试是查找、解决软件中逻辑错误代码(成为bug:软件臭虫)的重要手段,是软件开发中必不可少的环节。
2.调试也是学习、研究其他人编写的代码的一个很好的手段
3.Eclipse提供了强大的代码调试功能-Debug,通过Debug视图能快速定位代码中的逻辑错误,提高软件开发效率

2.Debug视图介绍

3.断点

1.断点是在源代码的可执行部分的指定行设置一个标志,在调试运行方式下,程序运行到该断点标志处会自动暂停,等待下一步操作。
2.通过设置断点可以快速执行断点之前的代码,然后在断点处暂停,这时可以换单个命令运行的方式来运行程序,查找程序中的逻辑错误。
3.断点设置的位置应该是程序员怀疑错误代码的附近位置,即对出错位置的定性分析,是一个大概的位置。

25_Debug调试案例

调试两个变量值互换错误代码
F6

3_Java语言Switch语言详解

1_JavaSwitch语句概述

1.概述

1.switch语句成为情况选择语句,又称开关语句
2.switch是分支语句的一种,用于对多种情况进行不同处理的语句。
3.JDK1.7之前的switch语句限定对整形数据进行判断。

2.定义格式

switch(表达式){
case常量值1:
代码块1;
break;
case常量值2:
代码块2;
break;
....
default:
以上常量值均不是时,执行本代码。
}

2_JavaSwitch语句应用案例1判断int类型的数据

示例-1判断int类型的数据
键盘输入一个5分制的分数,根据以下评分标准给出成绩的等级
5分:优秀
4分:良好
3分:及格
0~2:不及格

解题步骤:
步骤1、创建Scanner对象;
步骤2、 通过键盘接收一个整形数据->score
步骤3、用switch对score的值进行判断,根据不同的分值显示不同的等级的字符串

package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner= new Scanner(System.in);
		System.out.println("输入5分制分数");
		int score =scanner.nextInt();
		switch(score){
		case 5:
			System.out.println("优秀");
			break;
		case 4:
			System.out.println("良好");
			break;
		case 3:
			System.out.println("及格");
			break;
		case 2:
		case 1:
		case 0:
			System.out.println("不及格");
			break;
			default:
				System.out.println("输入的分数不是5分制的分数");
		}
	}

}



3_JavaSwitch语句应用案例2switch语句的"贯穿"现象

示例,switch语句的“贯穿”现象
int score=4;
switch (score) {
	case 5:
		score++;
	case 4:
		score++;
	case 3:
		score++;
	case 2:
		score++;
	case 1:
		score++;
	case 0:
		score++;
	default:
		System.out.println(score);
}


4_JavaSwitch语句应用案例3键盘输入字符串并进行判断

示例 键盘输入优、良、中、差,给出对应的分数5、4、3、2.
解题步骤:
步骤1、创建Scanner对象
步骤2、通过键盘接收一个char类型的数据->grade
步骤3、用switch对grade的值进行判断,根据不同的等级显示不同的分数。
package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test06 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入分数等级:");
		char grade =scanner.next().charAt(0);
		switch(grade){
		case '优':
			System.out.println(5);
			break;
		case '中':
			System.out.println(4);
			break;
		case '良':
			System.out.println(3);
			break;
		case '差':
			System.out.println(2);
			break;
		default:
			System.out.println("输入的等级错误!");
			break;
		}
	}

}


5_JavaSwitch语句应用案例4显示指定月的天数

示例 显示指定月的天数
输入月份,显示改月天数.不考虑闰年2月份的情况.
解题步骤:
步骤1:创建Scanner对象;
步骤2:通过键盘接收一个int类型的数据->month,
代表月份值;
步骤3:用switch对month的值进行判断,根据月份显示相应的天数.


4_Java判断与关系运算

1_Java关系运算的种类

1_概述

1.Java还有提供了对两个量之间的关系进行比较的运算,称为关系运算.
2.关系运算的结果是true或false.

2_关系运算的种类

关系运算
运算种类 运算符号 运算表达式
等于运算 == 表达式1==表达式2
不等于运算 != 表达式1!=表达式2
大于运算 > 表达式1>表达式2
小于运算 < 表达式1<表达式2
大于等于运算 >= 表达式1>=表达式2
小于等于运算 <= 表达式1<=表达式2










例1、5-2==9/3
步骤1、进行两边的数学运算,结果是:3==3;
步骤2、做等于比较,结果是true.
例2、7*2<12 结果是false.
例3、8!=8,结果是false.
例4、 8>=8,结果是true.
例5. 8<=8,结果是true.

2_Java示例讲解关系运算中判断语句和流程控制作用

示例 键盘输入分数,显示该分数是否及格.
显示效果如下所示:
输入分数:
60
及格:true

package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test09 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入分数:");
		int score = scanner.nextInt();
		boolean isPass=score>=60;
		System.out.println(score+"及格:"+isPass);
	}

}




5_Java语言逻辑运算

1_Java逻辑运算的种类

1_概述

1.逻辑运算是在关系运算基础之上的运算,能处理更加复杂的问题.
2.逻辑运算的结果是true或false.

2_逻辑运算的种类

逻辑运算种类
运算种类 运算符号 运算表达式
与运算(长路运算) & 关系运算1&关系运算2
与运算(短路运算) && 关系运算1&&关系运算2
或运算(长路运算) | 关系运算1|关系运算2
或运算(短路运算) || 关系运算1||关系运算2
非运算 ! !(关系运算)










2_Java逻辑长路短路"与"运算

1_概述

与运算的特点:当两个关系运算的结果都是true时,运算的结果是true,否则是false.
与运算
关系运算1 关系运算1 与运算结果
false false false
false true false
true false false
true true true








2_长路与运算

1.长路与运算的运算符号:&
2.&在两边都是整数时,是逐位与运算;在两边是关系运算时,
是逻辑运算.
3.长路与运算会把两边的关系运算结果都计算出来.
示例:4<3 & 5*3>12
步骤1 计算4<3,结果是false
步骤2 计算5*3>12,结果是true
步骤3 false & true 结果是false

3_短路与运算

1.短路与运算的运算符号:&&
2.短路与运算的特点:当运算符左边的关系运算结果是false时,不再对右边的关系运算进行计算.
示例:4<3&&5*3>12
步骤1 计算4<3,结果是false
步骤2 false && 5*3>12 结果是false

3_Java逻辑长路短路"或"运算

1.概述

当两个关系运算有一个true时,运算的结果是true,否则都false
或运算
关系运算1 关系运算1 与运算结果
false false false
false true true
true false true
true true true










2.长路或运算

1.长路或运算的运算符:
2.长路或运算在两边都是整数时,是逐位或运算就;在两边是关系运算时,是逻辑运算.
3.长路或运算会将两边的关系运算结果都计算出来.
示例:5*3>12|4<3
步骤1.计算5*3>12,结果是true
步骤2.计算4<3,结果是false
步骤3 计算true|false,逻辑运算结果是true

3.短路或运算

1.短路或运算的运算符:||
2.短路或运算的特点:当运算符号左边的关系运算结果是true时,不再进行右边的关系运算,直接得出true的结果.
示例:5*3>12||4<3
步骤1.计算5*3>12,结果是true

4_Java逻辑"非"运算

1.概述

非运算
关系运算 非运算结果
false true
true false





2.示例

示例:!(5*3>12)
步骤1.计算5*3>12,结果是true;
步骤2: !true,逻辑运算结果是false.

5_Java逻辑运算优先级

三种逻辑运算的优先级:
非运算最高
其次是与运算
优先级最低的是或运算

示例: 5>=7||4<5&&!false
步骤1.计算关系运算:5>=7,结果:false;
步骤2 计算关系运算:4<5,结果:true;
步骤3 计算逻辑非运算:!false,结果:true;
false||true&&true
步骤4 计算逻辑运算:true&&true,结果:true
步骤5 计算逻辑或运算:false||true,结果:true

6_Java逻辑运算案例

示例-1 键盘输入一个5分制分数,用与运算运算并显示该数是否为5分制分数.
技巧:当输入Scanner 自动导入 import java.util.Scanner
1.先输入Scanner
2.ctrl+shift+o
3.自动导入 import java.util.Scanner


package com.jikexueyuan.ch03;

import java.util.Scanner;



public class Test10 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入5分制分数:");
		int score =scanner.nextInt();
		boolean isFiveScore=score>=0&&score<=5;
		System.out.println(score+"是5分制的分数:"+isFiveScore);
	}

}

示例-2 键盘输入一个5分制分数,用或运算计算并显示该数是否为5分制的分数
package com.jikexueyuan.ch03;
import java.util.Scanner;



public class Test11 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入5分制分数:");
		int score =scanner.nextInt();
		boolean isnotFiveScore=score<0||score>5;
		System.out.println(score+"不是5分制的分数:"+isnotFiveScore);
	}

}

示例-3键盘输入一个5分制分数,用非运算计算并显示该数是否为5分制的分数

package com.jikexueyuan.ch03;

import java.util.Scanner;



public class Test12 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入5分制分数:");
		int score =scanner.nextInt();
		boolean isFiveScore=!(score<0||score>5);
		System.out.println(score+"是5分制的分数:"+isFiveScore);
	}

}



6_Javaif判断语句的用法

1_Java if语句概述和使用格式

1_概述

1.if语句用于判断不同的条件,根据判断的结果执行不同的代码.
2.if语句判断的条件可以是关系运算,逻辑运算,if语句根据逻辑值true,false来决定执行不同的代码.
3.if语句在开发中使用极为广泛

2_if语句使用格式(1)

if(条件表达式){
条件表达式结果是true时,执行本代码块
}
示例:
if(5>3){
System.out.println("5>3");
}

示例,输入考试成绩,若达到60分以上,则显示:成绩合格
package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test13 {

	public static void main(String[] args) {
		// TODO Auto-generated method 
		Scanner scanner=new Scanner(System.in);
		System.out.println("请输入分数:");
		int score = scanner.nextInt();
		if(score>=60){
			System.out.println(score+"及格");
		}
		
	}

}


2_Java if语句使用格式2-if else语句

if(条件表达式){
条件表达式结果是true时,执行本代码块
}else{
条件表达式结果是false时,执行本代码块
}
示例:
if(5>3){
System.out.println("5小于3");
}else{
System.out.println("5大于3");
}

示例,输入两个数,找最大数
package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test14 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner =new Scanner(System.in);
		System.out.println("输入第一个数");
		int a =scanner.nextInt();
		System.out.println("输入第二个数");
		int b = scanner.nextInt();
		if(a>b){
			System.out.println(a+"是最大数");
		}else{
			System.out.println(b+"是最大数");
		}
	}
}


3_Java if语句使用格式3-if嵌套语句

if(条件表达式1){
条件表达式1结果是true时,执行本代码块
}else if(...){
....
}else if(条件表达式n){
条件表达式n结果是true时,执行本代码块
}else{
条件表达式n结果是false时,执行本代码块
}
示例,键盘输入5分制分数,根据以下标准给出成绩等级.
5分:优秀
4分:良好
3分:及格
0~2分:不及格
package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test15 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入5分制分数:");
		int score = scanner.nextInt();
		if(score==5){
			System.out.println("优秀");
		}else if(score==4){
			System.out.println("良好");
		}else if(score==3){
			System.out.println("及格");
		}else if(score>=0&&score<=2){
			System.out.println("不及格");
		}else{
			System.out.println("输入的不是5分制分数");
		}
	}

}



4_【Java If语句算法示例1】键盘输入Java Android sql三科分数 找最高分

示例,键盘输入java,android和sql三科分数,找出其中最高分.
package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test16 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入java分数");
		int java =scanner.nextInt();
		System.out.println("输入android分数");
		int android = scanner.nextInt();
		System.out.println("输入sql分数");
		int sql=scanner.nextInt();
		if(java>=android&&java>=sql){
			System.out.println("最高分:"+java);
		}else if(android>=sql){
			System.out.println("最高分:"+android);
		}else {
			System.out.println("最高分:"+sql);
		}
	}

}


5_【Java If语句算法示例2】选择法找三科分数最高分(未完持续)

示例,找出三科分数的最高分(解法2-选择法)
package com.jikexueyuan.ch03;

import java.util.Scanner;

public class Test17 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("java android sql:");
		int java = scanner.nextInt();
		int android = scanner.nextInt();
		int sql = scanner.nextInt();
		int maxScore=java;
		if(maxScore<android){
			maxScore=android;
		}
		if(maxScore<sql){
			maxScore=sql;
		}
		System.out.println("最高分:"+maxScore);
	}

}




7_Java循环结构语句的特点和使用方法

1_Java循环概述和while循环

1.概述

引例,变成打印所有大写英文字母和对应的unicode码.
System.out.println('A'+":"+65);
System.out.println('B'+":"+65);
....
System.out.println('Z'+":"+90);
Java提供了四中循环语句,本章介绍其中的三种:
while循环,do while循环和for循环

2.while循环的使用格式

while(循环继续的条件表达式){
循环体或称循环内容
}

3.while循环的执行流程

示例:用while循环演示一个场景:
上课迟到:罚做俯卧撑20次
int i =1;
while(i<=20){
System.out.println("上课迟到,罚做俯卧撑"+i+"次");
i++;
}

2_用while循环打印所有大写英文字母和对应的Unicode码解法(1)

示例,用while循环打印所有大写英文字母和对应的unicode码解法(1)
package com.jikexueyuan.ch04;

public class Test01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i =65;
		while(i<=65+25){
			System.out.println((char)i+":"+i);
			i++;
		}
	}

}


3_用while循环打印所有大写英文字母和对应的Unicode码解法(2)

示例,用while循环打印所有大写英文字母和对应的unicode码解法(2)
package com.jikexueyuan.ch04;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char c='A';
		while(c<='Z'){
			System.out.println(c+":"+(int)c);
			c++;
		}
	}

}



4_Do While循环使用格式和执行流程

1.do while循环的使用格式

do{
循环内容
}while(循环继续的条件表达式);

1.do while循环的执行流程

示例:用do while循环演示一个场景:上课迟到:罚做俯卧撑20次
int i=1;
do{
System.out.println("上课迟到,罚做俯卧撑"+i+"次");
i++;
}while(i<=20);

5_用Java do while循环打印所有大写英文字母和对应的Unicode码解法(1)

示例.do while循环打印所有大写英文字母和对应的Unicode码解法(1)

package com.jikexueyuan.ch04;

public class Test03 {
	public static void main(String[] args) {
		int i =97;
		do{
			System.out.println((char)i+":"+i);
			i++;
		}while(i<=97+25);
	}
}



6_用java do while循环打印所有大写英文字母和对应的Unicode码解法(2)

示例.用do while循环打印所有小写英文字母和对应的unicode码解法(2)
package com.jikexueyuan.ch04;

public class Test04 {
	public static void main(String[] args) {
		char c='a';
		do{
			System.out.println(c+":"+(int)c);
			c++;
		}while(c<='z');
	}
}

7_Java For循环语句的格式

1.for循环的使用格式

for(循环变量初始化;循环继续的条件表达式;循环变量值变更){
循环内容
}

2.for循环的执行流程

示例:用for循环演示一个场景:上课迟到:罚做俯卧撑20次
for(int i=1;i<=20;i++){
System.out.println("上课迟到,罚做俯卧撑"+i+"次");
}
for(int  i=1,j=j;i<=20&&j<=30;i++,j+=2){
循环内容
}

8_Java常用技巧-Java配置环境变量与常用技巧

1_课程概述

1.Android开发环境搭建
2.Android六大布局
3.Android常用控件
4.Android点击事件响应机制
5.在Java中实现Android多线程编程
6.Java中实现XML的PULL解析,SAX解析
7.Socket变成实现大文件断点续传,分块下载,上传
8.使用HTTP协议实现大文件断点续传,分块下载,上传
9.在Java中实现HttpClient编程
10.运用反射和XML解析实现Android布局文件的万能解析器

2_计算机语言概述

1.什么是计算机语言
计算机语言(Computer Language)是人与计算机之间通讯的语言.
2.机器语言
2.1.什么是机器语言
电子计算机锁使用的是由"0"和"1"组成的二进制数,二进制是计算机语言的基础.
2.2.机器语言的特点
机器语言是专家们才能激励的语言,与人类语言的差别极大,所以称之为机器语言.
机器语言是计算机硬件能之间识别的语言.
2.3.机器语言的有点
1.效率最高,代码精简.
2.计算机硬件能直接识别.
2.4.机器语言的缺点
1.专业知识要求高.
2.代码维护成本高.
3.移植成本高.

3.汇编语言
3.1汇编语言概述
1.汇编语言用简介的英文字母,符号串来替代一个特定的指令的二进制串.
2.汇编语言设计的程序最终被转换成机器指令.
3.2汇编语言的特点
1.汇编语言能狗保持机器语言的一致性,直接,简捷.
2.目标代码剪短,占用内存少,执行效率高.
3.汇编语言可以方便地访问,控制计算机的软,硬件资源.
3.3汇编语言的缺点
1.移植成本高
2.维护成本高
3.开发周期长
3.4汇编语言的应用领域
1.操作系统的核心,如linux操作系统的内核部分.
2.存储设备有限,需要快速响应和实时响应的领域,如:单片机,仪器,仪表,工业控制设备等.

4.高级语言
4.1什么是高级语言
高级语言直接近于数学语言和人的自然语言,布衣赖于计算机硬件,编出的程序能在所有机器上通用.
4.2高级语言的优势
1.降低移植成本;
2.降低软件的维护成本;
3.缩短软件开发周期;
4.3.高级语言的分类
高级语言分为非结构化语言,结构化语言,面向对象语言.

5.非结构化程序设计语言
非结构化程序包含按顺序排列的命令或声明.
每条语句通常占用一行,并且每行都有编号或者标签.

6.结构化程序设计语言
结构化程序设计强调对代码的封装,将完成功能的代码封装在一个一个的函数中

7.面向对象语言
1.当今最主流的变成语言.
2.提供了更高一级的抽象和封装,将代码和数据封装在对象中.
3.提供了继承,多台等高级的功能.
4.具有更好的重用性和可扩展性.
5.典型代表:c++,Java


3_Java入门

1.Java语言概述

1991年Sun公司开始研发Java语言.

1996年正式推出Java1.0.

Android的应用开发层使用的语言是Java

2.Java平台

2.1JavaSE-标准

2.2JavaEE-企业

2.3JavaME-微型

3.Java语言特点

1.语法简明

2.面向对象

3.跨平台

4.安全.

5.多线程

4.Java语言运行机制
4.1高级语言运行机制
1.编译型语言
2.解释语言

4.2Java语言运行机制
1.编译与解释结合的语言.
2. .java:可直接圆度的源程序
3. .class:不可直接阅读的字节码.
4. Java解释器不跨平台,.java和.class跨平台


4_JDK介绍

1_Java开发工具包

1.1.JDK

JDK全称是Java Development Kit(Java 标准版开发包).

1.2.JRE

JRE是Java运行时环境(Java Runtime Enviroment)的简称.

JRE是运行Java程序必需的条件.

1.3.JVM

JVM是Java虚拟机(Java virtual Machine)的简称

2_Java API

Java API:Java系统核心类库

3_JAR

JAR:Java Archive, Java归档文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.

4_JDK安装

oracle,

检测java版本

cmd-java -version即可查看

5_编写第一个Java程序

步骤1,用文件处理文件编写Java源程序,以扩展文件名.java保存.

步骤2,调用JDK开发工具中的Javac.exe将.java文件编译为.class文件.

步骤3,调用JDK的java.exe解释运行步骤2编译好的.class文件.

Ubuntu下可以在终端,直接编译

6_设置环境变量

1.什么是环境变量
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序将使用到的信息.

2.为什么使用环境变量
设置在环境变量中应用程序可以在任意路径下被调用.
比如:在别的盘符的路径下,输入javac 报错提示不是内部命令.

3.设置classpath
Ubuntu下的classpath 
4.设置path 
设置环境变量的步骤:
步骤1.设置java的一个总路径Java_HOME;
步骤2 设置命令路径PATH;
步骤3.设置加载类路径CLASSPATH

7_Java的程序结构

packege com.eoe...包名
/**
*这是文档朱是语句
*/
public class Test01{//定义类
/*
*这是多行注释语句.
*main方法,类的入口
*/
public static void main(String[] args){
//单行注释语句,在控制台显示双引号中的文本
System.out.println("Hello Java");
 }//main 方法结束
}//Test01结束

8_Eclipse开发工具概述

Eclipse是著名的跨平台的自由集成开发环境(IDE)
Eclipse的本身只是一个框架平台,通过插件可支持不同的语言.

9_下载Eclipse

 1.关于Eclipse和AndroidSDK二合一的开发工具.
 2.Eclipse二合一软件下载网址:  

10_Eclipse开发环境介绍

1.设置主题,字体等

11_创建Java项目

1.ADT创建Java项目

12_给main方法的args参数赋值

1.android studio,run-edit configurations
2.program arguments:输入张三

13_加运算

1.字符串与数值相加“加”
例(1)“abc”+35的结果是“abc35”
例(2)3+5+"12"
结果:"812"
例(3) ""+1+2,其中""代表空字符串

14_Java的项目结构

com.jikexueyuan.ch01 文件夹名为 com->jikexueyuan->
1.src文件夹
2.bin文件夹
3.JRE:Java项目使用的Java运行时类库

15_项目的导出

export-General-Archive File
保存为zip文件格式

16_项目的导入

import-General-Existing Projects into Workspace-select archive file 选择 zip

17_修改项目名、包名和类名

选中项目或者报名和类名,按下shift+F6

18_Math类

1.Math类是JDK中用于数学运算的工具类.
2.Math类在rt.jar的java.lang包下

ctrl+f11   RUN
syso+alt+/ 输出打印语句

1.Math.pow(m,n);
作用:计算m的n次幂
参数-m:底数;
参数-n:幂
2.Math.sqrt(n);
计算n的平方根
3.Math.abs(n);
n的绝对值
4.Math.round(n);
对n四舍五入
5.Math.floor(n);
小数部分去掉,保留整数

19_Java程序的书写规范

类名首字母大写
1.类名的命名规则
2.方法名的命名规则
3.代码块由一对大括号包裹
4.代码对齐/缩进
5.双引号表示字符串的开始,结束;
6.分号表示一个命令的结束;
7.大括号表示一个语句快的开始,结束;
8.小括号表示一个命令的参数开始,结束.
以上符号必须是单字符,不能是双(中文标点符号)字符.

20_常见错误

编译错误:编译期间的错误,通常是代码不符合Java的语法规则.
1.少一个括号
2.多一个括号
3.System.out.println语句中输出多个字符串
4.少双引号
5.无效的分号

练习题1:
以下有不符合Java代码书写规范和错误代码的地方指出并修改.

package com\jikexueyuan\ch01;包名的分隔符是.不是\
public class 测试04类名不要使用中文
{ 起始大括号应在类名,方法名之后并在同一行
public static void Main(string[] args)( 代码块必须是大括号
Main方法首字母是小写,String的首字母是大写
system.out.println(“Hello Java”);
main方法中的代码应向右缩进四个空格
System首字母必须大写
字符串两端的双引号不能使用中文全角符号
main方法的代码块少结束的大括号
}

正确写法
package com.jikexueyuan.ch01;

/**
 * Created by zmzp on 14-12-2.
 * ctrl+f11
 *
 */
public class Test02 {
    public static void main(String[] args){
        System.out.println("Hello Java");
    }
}



21_常用技巧

1.解决删除项目时,忘记勾选删除磁盘选项
手动删除workpace目录下的项目文件夹即可
否则,可能会再导入的时候无法导入,因为workpace目录下存在同名文件夹
2.设置行号
在要显示的行号位置,右键,点击“show line number”
3.设置工作空间
在eclipse下file,Switch Workspace
在android studio下未知。
4.Eclipse快捷键
1.格式化代码的快捷键:Ctrl+Shift+F
2.添加/取消单行注释的快捷键:Ctrl+/
3.添加多行注释的快捷键:Ctrl+shift+/
4.取消多行注释的快捷键:Ctrl+Shift+\
5.Android 快捷键

9_Java类方法详解

1_static关键字

1.类方法

由static修饰的方法称为类方法或静态方法。

2.静态变量

1.由static修饰的变量成为静态变量,页称类变量。
2.静态变量定义的位置是在方法之外。
3.静态变量与静态方法都是在类从磁盘加载至内存后被创建的,与类同时存在,同时消亡。
4.静态变量又称类的成员变量,在类中是全局变量,可以被类中的所有方法调用。
5.静态变量的值由JVM自动初始化,以下是各类型变量初始化值列表:

各类型变量初始化值列表
变量类型 初始值
整形 0
浮点型 0.0
字符型 unicode码为0的字符。提示:改字符不可见
布尔型 flase
字符串型 null











示例
键盘输入一个人的姓名,性别,年龄,身高,性格,然后让该人向大家做自我介绍。

package com.jikexueyuan.ch03;

import java.util.Scanner;

/**
 * Created by zmzp on 14-12-3.
 */
public class Test01 {
    static String name;
    static char sex;
    static short age;
    static float height;
    static String type;

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("姓名:");
        name=scanner.next();
        System.out.println("性别:");
        sex=scanner.next().charAt(0);
        System.out.println("年龄:");
        age=scanner.nextShort();
        System.out.println("身高:");
        height=scanner.nextFloat();
        System.out.println("性格:");
        type=scanner.next();
        System.out.print("嗨,大家好,我叫:"+name);
        System.out.print(",今年:"+age+"岁");
        System.out.print(",身高:"+height+"米");
        System.out.println(",我是一个"+type+"的男士");

    }
}


2_定义无参方法

1_什么是方法

方法代表一段代码,Java的代码通常都封装在方法中.
例如main方法.main方法是Java规定的每个类的代码运行入口.

2_定义无参方法

定义格式:
static void 方法名(){
方法体-方法中的代码
}
示例:
static void input(){
方法中的Java代码
}

3_为什么使用方法

1.Java的代码通常要在方法中编写,即代码封装在方法中.
2.模块化编程:将具有某种功能的代码封装在一个方法中,不同的代码块由不同的方法封装,利于程序的管理,维护.
3.将具有复用价值的代码封装在方法中,调用该代码块时,只需调用方法名,这样能有效地减少程序的冗余.

示例
将上节课示例中输入数据的代码块封装在方法input()中,然后在main()中调用input方法两次,分别为两个人输入姓名,性别,年龄,身高,性格的信息。
package com.jikexueyuan.ch03;

import java.util.Scanner;

/**
 * Created by zmzp on 14-12-3.
 */
public class Test01 {
    static String name;
    static char sex;
    static short age;
    static float height;
    static String type;

    public static void main(String[] args) {
        //输入一个的数据
        input();

        System.out.print("嗨,大家好,我叫:" + name);
        System.out.print(",今年:" + age + "岁");
        System.out.print(",身高:" + height + "米");
        System.out.println(",我是一个" + type + "的男士");
        //给第二个人输入数据
        input();
        System.out.print("嗨,大家好,我叫:" + name);
        System.out.print(",今年:" + age + "岁");
        System.out.print(",身高:" + height + "米");
        System.out.println(",我是一个" + type + "的男士");

    }
    static void input(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("姓名:");
        name = scanner.next();
        System.out.println("性别:");
        sex = scanner.next().charAt(0);
        System.out.println("年龄:");
        age = scanner.nextShort();
        System.out.println("身高:");
        height = scanner.nextFloat();
        System.out.println("性格:");
        type = scanner.next();
    }
}


3_定义带参方法

1.定义格式

static void 方法名(类型1 变量1,类型2 变量2,...){
方法体-方法中的代码
}

示例:
static void feeling(String cause,String content){
方法中的代码
}

2.为什么使用带参方法

带参方法可以接收外界传递的数据,使得方法能处理更加复杂的问题,具有更灵活的功能
示例
定义带参方法feeling,表达人的感情,在main方法中调用feeling()

技巧:在选中两行System.out.println();语句,在android studio 快捷键 ctrl+alt+M
输入方法名:feeling
1. Select some code in Android Studio, but don't select say the first character on a line
2. Right click -> Refactor -> Extract -> Method
package com.jikexueyuan.ch03;

import java.util.Scanner;

/**
 * Created by zmzp on 14-12-3.
 */
public class Test02 {
    static String name;
    static char sex;
    static short age;
    static float height;
    static String type;

    public static void main(String[] args) {
        //输入一个的数据
        input();
        System.out.print("嗨,大家好,我叫:" + name);
        System.out.print(",今年:" + age + "岁");
        System.out.print(",身高:" + height + "米");
        System.out.println(",我是一个" + type + "的男士");
        feeling("我捡了五百万","哈哈哈...");
        //给第二个人输入数据
        input();
        System.out.print("嗨,大家好,我叫:" + name);
        System.out.print(",今年:" + age + "岁");
        System.out.print(",身高:" + height + "米");
        System.out.println(",我是一个" + type + "的男士");
        feeling("我失恋啦","呜呜呜...");

    }

    private static void feeling(String cause,String content) {
        System.out.println(cause);
        System.out.println(content);
    }

    static void input(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("姓名:");
        name = scanner.next();
        System.out.println("性别:");
        sex = scanner.next().charAt(0);
        System.out.println("年龄:");
        age = scanner.nextShort();
        System.out.println("身高:");
        height = scanner.nextFloat();
        System.out.println("性格:");
        type = scanner.next();
    }
}


4_定义带返回值的方法

1.为什么使用带返回值方法

1.在Java的Math类中定义了许多具有计算功能的方法,这些方法也称为函数.
例如:double Math.aqrt(double value)
2.Java允许程序员自定义这种具有计算并能返回结果的方法.

2.定义格式

static 返回值类型 方法名(参数列表){
方法中的代码
return 返回的数据;
}
示例:定义一个计算并返回两个数和的方法add,代码如下:
static double add(double d1,double d2){
return d1+d2;
}
示例
定义一个能保留小数点后任意位的方法pround,在main方法中调用方法,保留指定小数点后任意位.
package com.jikexueyuan.ch03;

/**
 * Created by zmzp on 14-12-3.
 */
public class Test03 {
    public static void main(String[] args) {
        System.out.println("3.758保留小数点后2位"+pround(3.758,2));


    }
    static double pround(double value,int index){
        //步骤1,计算10的n次方
        double pow10=Math.pow(10,index);
        //步骤2,定义result变量保存计算结果
        double result=value*pow10;
        //步骤3,对index+1位进行四舍五入
        result=Math.round(result);
        //步骤4,环境value值
        result/=pow10;
        return result;
    }
}




10_Java面向对象中类与对象的概念和使用

1_Java方法创建和重载

1.方法的定义

1.方法就是一个可重复调用代码段
2.定义格式:
访问修饰符 返回值类型 方法名(){
方法主体
}
package com.jikexueyuan.method;

/**
 * Created by zmzp on 14-12-3.
 */
public class MethodDemo01 {
    public static void main(String[] args) {

    }

    public void tell(){
        System.out.println("hello jiekexueyuan");
    }

    /**
     * 方法的返回值类型,void类型是不需要返回值的,其它的类型全部是需要有返回值的
     * @return
     */
    public int say(){

        return 0;
    }
    public String print(){

        return "hello";
    }
    public  void tell1(int i,String n){
        System.out.println(i+n);

    }
    public int tell2(int i){
        return i;
    }
}


2.方法的重载

1.方法的重载:方法名称相同,但是参数的类型和个数不同,通过传递参数的个数和类型不同来完成不同的功能

3.掌握方法的递归调用

1.class 类名称{
 属性
方法
}
2.声明一个类需要通过一个关键字class 

类与对象的关系
1.类是对某一类事物的描述,是抽象的,概念上的意义,对象是实际存在的该类事物的每一个个体,也被称为对象或实例.
package com.jikexueyuan.classdemo;

class Person{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+name+"     "+"性别:"+age);
    }
}
/**
 * Created by zmzp on 14-12-4.
 */
public class ClassDemo01 {
    public static void main(String[] args) {
        /**
         * 创建对象
         * 赋值
         * 对象.属性
         * 对象.方法
         */
        Person per =null; //声明
//        per = new Person();//实例化操作
//        Person per = new Person();//声明并实例化
        per.name="张三";
        per.age=30;
        per.tell();
        /*
         *Exception in thread "main" java.lang.NullPointerException
         * 空指针异常
         *
         */

    }
}



内存的划分

4.了解面向对象

1.程序的发展历程:面向过程,面向对象
2.解释面向过程和面向对象:
面向过程:不去想做什么样子的盒子,随机取工具制作
面向对象:先想好做一个什么样的盒子,再去找对应的工具去做

5.面向对象的三大特征

1.封装性
对外部不可见
2.继承
扩展类的功能
3.多态性
方法的重载
对象的多态性

6.掌握类的定义,声明及使用

7.内存的划分




2_类的创建及类与对象的关系

3_Java面向对象思想编程

4_Java方法递归调用

1.递归调用是一种特殊的调用形式,就是方法自己调用自己.
package com.jikexueyuan.method;

/**
 * Created by zmzp on 14-12-4.
 */
public class MethodDemo03 {
    public static void main(String[] args) {
        System.out.println(addNum(100));
    }

    /**
     * 从1+100,100+99+98+97+..+1
     * @param num
     * @return
     */
    public static int addNum(int num){
        if (num==1){//程序出口
            return 1;
        }else {
            return num+addNum(num-1);
        }
    }
}



11_Java面向对象的基本特征之一:封装性

1_Java封装性的使用

1.封装性

1.封装性的产生目的
保护某些属性和方法不被外部所看见
2.封装的实现
为属性和方法进行封装是通过关键字private声明的
实现该属性的set和get方法,为外部所访问
封装就是,不能直接被赋值,需要写一个set和get方法才可以实现
在android stuodio 下alt+insert选择generate-选择getter and setter 然后全选,点击"ok"
package com.jikexueyuan.classdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class Person{
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void tell(){
        //get是得到
        System.out.println("年龄:" + getAge()+"  "+"姓名: "+getName());
    }
}
public class ClassDemo01 {
    public static void main(String[] args) {
        Person per = new Person();
//        per.age=-30;
//        per.name="张三";
        per.setAge(30);
        per.setName("张三");
        per.tell();

    }
}



2.构造方法

3.匿名对象


2_Java匿名对象的使用

1.匿名对象就是没有名字的对象,如果程序中只是用一次该对象,就可以使用匿名对象的方式.
package com.jikexueyuan.classdemo;
/**
 * Created by zmzp on 14-12-4.
 */
class Student{
    public void tell(){
        System.out.println("Hello Jikexueyuan");
    }
}
public class ClassDemo03 {
    public static void main(String[] args) {
//        Student stu = new Student();
//        stu.tell();
        //匿名对象
        new Student().tell();
    }
}


3_Java构造对象的使用

1.格式:
访问修饰符 类名称(){
程序语句
}
2.注意点:
(1)构造方法名称必须与类名一致
(2)构造方法没有返回值
3.构造方法主要是为类中的属性初始化
4.每个类在实例化之后都会调用构造方法,如果没有构造方法,程序在编译的时候会创建一个无参的什么都不做的构造方法.
5.构造方法也可以重载
package com.jikexueyuan.classdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class People{
    //构造方法
    int age;
    String name;
    public People(int a,String n ){
        age=a;
        name=n;
        System.out.println("姓名:"+name+"        "+"年龄:"+age);
    }
    public People(int a){
        age=a;
        System.out.println("年龄:"+age);
    }
}
public class ClassDemo02 {
    public static void main(String[] args) {
        People per = new People(30,"张三");

    }
}



12_Java面向对象中引用的传递

1_Java引用传递

1.范例
package com.jikexueyuan.ref;

/**
 * Created by zmzp on 14-12-4.
 */
class Ref2{
    String temp="hello";
}
public class RefDemo03 {
    public static void main(String[] args) {
        Ref2 r1 =new Ref2();
        r1.temp="jike";
        System.out.println(r1.temp);
        tell(r1);
        System.out.println(r1.temp);
    }
    public  static void tell(Ref2 r2){
        r2.temp="xueyuan";
    }
}


2_Java this关键字

1.表示类中的属性和调用方法
2.调用本类中的构造方法
3.表示当前对象
package com.jiekexueyuan.thisdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class People{
    private String name;
    private int age;
    public People(String name,int age){
        this();
        this.name=name;

        this.age=age;
    }
    public People(){
        System.out.println("无参数构造方法");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void tell(){
        System.out.println("姓名:"+this.getName()+"    年龄:"+this.getAge());

    }
}
public class ThisDemo01 {
    public static void main(String[] args) {
        People  p =new People("张三",30);
        p.tell();

    }
}



package com.jiekexueyuan.thisdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class People1{
    public void tell(){
        System.out.println(this);
    }
}
public class ThisDemo02 {
    public static void main(String[] args) {
        People1 p = new People1();
        System.out.println(p);
        p.tell();

    }
}


3_Java static关键字

1.使用static声明属性
static声明全局属性
2.使用static声明方法
直接通过类名调用
3.注意点:
使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的.

package com.jikexueyuan.staticdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class Person{
    String name;
     private static String country="北京";

    public Person(String name){
        this.name=name;
    }

    public static String getCountry() {
        return country;
    }

    public static void setCountry(String country) {
        Person.country = country;
    }

    public void tell(){
        System.out.println("姓名:"+name+" 出生地:"+country);

    }
}
public class StaticDemo01 {
    public static void main(String[] args) {

        Person.setCountry("上海");
        Person p1 = new Person("张三");
//        p1.country="上海";
        p1.tell();

        Person p2 = new Person("李四");
//        p2.country="上海";
        p2.tell();
        Person p3 = new Person("王五");
//        p3.country="上海";
        p3.tell();

    }
}

记住:静态方法不能调用非静态方法!!!
package com.jikexueyuan.staticdemo;

/**
 * Created by zmzp on 14-12-4.
 */
public class StaticDemo02 {
    private static int i=10;
    public static void main(String[] args) {
        System.out.println(i);
        tell();
    }
    public static void tell(){

    }
}



13_Java面向对象基本特征:继承

1_Java继承的实现

1.继承的基本概念
扩展父类的功能
2.Java中使用extends关键字完成继承
class 子类 extends 父类

package com.jikexueyuan.extendsdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class Person{
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
//    public void tell(){
//        System.out.println("姓名: "+ getName()+"  年齡:"+getAge());
//    }
}
class Student extends Person{
//    private int age;
//    private String name;
    private int score;
//
//    public int getAge() {
//        return age;
//    }
//
//    public void setAge(int age) {
//        this.age = age;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
    public void say(){
        System.out.println("成績: "+getScore()+getName()+getAge());
    }
}
public class ExtendsDemo01 {
    public static void main(String[] args) {
        Student s = new Student();
        s.setAge(20);
        s.setName("張三");
        s.setScore(100);
//        s.tell();
        s.say();
    }
}


2_Java继承的限制

1.在Java中只允许单继承
比如: class work extends people,workerpeople{},这是不可以的.
2.子类不能直接访问父类的私有成员,如果要访问,必须创建set get方法
package com.jikexueyuan.extendsdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class People{
      private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

class Worker extends People{
    public void tell(){
        System.out.println(getAge());
    }
}
//class PetWorker extends Worker{
//    public void tell(){
//        System.out.println(age);
//    }
//}
public class ExtendsDemo02 {
    public static void main(String[] args) {
        Worker w = new Worker();
        w.setAge(100);
        w.tell();

    }
}



3_Java子类对象实例化过程

1.在子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类构造方法.
先执行父类,再执行子类,好比没有父亲就没有儿子,所以先有父亲才有儿子.
package com.jikexueyuan.extendsdemo;

/**
 * Created by zmzp on 14-12-4.
 */
class Father{
    private int age;
    private String name;
    public Father(){
        System.out.println("父类的构造方法");
    }
}
class Son extends Father{
    public Son(){
        System.out.println("子类的构造方法");
    }

}
public class ExtendsDemo03 {
    public static void main(String[] args) {
        Son s = new Son();
    }
}


4_Java方法重写与super关键字

1.在继承中,也存在着重写的概念,其实就是子类定义了和父类同名的方法
2.定义:
方法名相同,返回值类型相同,参数也相同.
3.重写限制:
被子类重写的方法不能用用笔父类方法更加严格的访问权限
4.访问权限:
private< default<public

super关键字
1.super关键字:
强行调用父类的方法的执行
2.super不一定在重写中使用,也可以表示那些地方时从父类中继承而来的

package com.jikexueyuan.extendsdemo;

/**
 * Created by zmzp on 14-12-4.
 */

class A {
    public void tell(){
        System.out.println("我是tell方法");

    }
    void print(){

    }
}
class B extends A{
    public void tell(){
        super.tell();
        System.out.println("我重写了tell方法");
    }
}
public class ExtendsDemo04 {
    public static void main(String[] args) {
        B b= new B();
        b.tell();

    }
    void print(){
        
    }
}


5_Java重写与重载的区别


重写与重载
NO 区别点 重载 重写
1 单词 Overloading Overriding
2 定义 方法名称相同,参数的类型或个数不同 方法名称,参数的类型,返回值类型全部相同
3   对权限没有要求 被重写的方法不能拥有笔父类更加严格的权限
4 范围 发生在一个类中 发生在继承中


14_Java面向对象-抽象类与接口

15_Java String 字符串详解

16_Java面向对象多态性

17_Java开发调试技巧及Eclipse快捷键使用方法

package com.jikexueyuan.control;

/**
 * Created by zmzp on 14-12-5.
 */
public class Main {
    public static void main(String[] args) {
        //大多数快捷键在票那个过下对应Cmd键,在Windows下对应Ctrl键
        //Ctrl+1快捷修复 在android studio alt+enter
        //Ctrl+D快捷删除行 在android studio ctrl+y删除行
        //Shift+Enter
        //Ctrl+F11 在android studio ctrl+f10快速运行项目
        //alt+↑/↓ 快速移动行 在android studio shift+ctrl+↑/↓
        //Ctrl+alt+↑/↓ 快速复制行 在android studio ctrl+d
        System.out.println();
        //Ctrl+M  Alt+1最大化最小化工作区窗口
        //alt+enter /补全代码



    }

    /**
     * 
     * @param a
     * @param b
     * @param k
     * @return
     */
    public String ok(int a,int b,boolean k){
        return "";
    }
}


18_Java异常处理


1_Java异常处理-捕获异常

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行,造成不必要的损失.
2.异常范例
1.异常格式:
try{
异常语句
}catch (Exception e){
}finally{
一定会执行的代码
}
package com.jikexueyuan.exc;

/**
 * Created by zmzp on 14-12-5.
 */
class Exc{
    int i=10;
}
public class ExceptionDemo01 {
    public static void main(String[] args) {
        int a =10;
        int b =10;
        int temp= 0;
        try {
            temp = a/b;
        } catch (ArithmeticException e) {
            System.out.println(e);
        }
        System.out.println(temp);
    }


}


2_Java异常处理-常见异常

1.数组越界异常:ArrayIndexOutOfBoundsException
2.数字格式化异常:NumberFormatException
3.算数异常:ArithmeticException
4.空指针异常:NullPointerException

package com.jikexueyuan.exc;

/**
 * Created by zmzp on 14-12-5.
 */
class Exc{
    int a =10;
    int b =10;
}
public class ExceptionDemo01 {
    public static void main(String[] args) {
        int temp= 0;
        Exc e = null;
        e = new Exc();
        try {
            temp = e.a/e.b;
            System.out.println(temp);
        } catch (NullPointerException e2) {
            System.out.println("空指针异常"+e2);
        }catch (ArithmeticException e2){
            System.out.println("算数异常:"+e2);
        }finally {
            System.out.println("程序退出");
        }
    }


}


3_Java异常处理-throws关键字

1.在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理
2.格式:
public void tell() throws Exception{}

package com.jikexueyuan.exc;

/**
 * Created by zmzp on 14-12-5.
 */
public class ExceptionDemo02 {
    public static void main(String[] args) throws Exception{
        tell(10,10);
    }
    public static void tell(int i,int j)throws ArithmeticException{
        int temp=0;
        temp = i/j;
        System.out.println(temp);
    }
}



4_Java异常处理-throw关键字

1.throw关键字抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可
package com.jikexueyuan.exc;
/**
 * Created by zmzp on 14-12-5.
 */
public class ExceptionDemo03 {
    public static void main(String[] args) {
        try{
            throw new Exception("实例化异常对象");
        }catch (Exception e){
            System.out.println(e);
        }
    }
}



5_Java异常处理-自定义异常

1.自定义异常直接继承Exception就可以完成自定义异常类
package com.jikexueyuan.exc;
/**
 * Created by zmzp on 14-12-5.
 */
class MyException extends Exception{
    public MyException(String msg){
        super(msg);
    }
}
public class ExceptionDemo04 {
    public static void main(String[] args) {
        try {
            throw new MyException("自定义异常");
        }catch (MyException e){
            System.out.println(e);
        }
    }
}




3_第3阶段|Android基础

1_Android基础知识-四大基本组件与常用控件完全解析

1_Android四大核心组件之Activity(1)

  • Activity概念
  • Activity的三种状态
  • Activity生命周期的七个方法
  • Activity的操作
报错问题:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

解决方法:在MainActivity.java中把继承的东西修改即可.

package cn.eoe.activitylc;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;


public class MainActivity extends Activity{

把ActionBarActivity改为Activity

  • Activity的数据传递

2_Android四大核心组件之Activity(2)

3_Android四大核心组件之Service(1)


4_Android四大核心组件之Service(2)

5_Android四大核心组件之BroadcastReceiver

6_Android四大核心组件之ContentProvider

7_Android四大核心组件之Intent(1)

8_Android四大核心组件之Intent(2)

9_Android用户界面之布局

10_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)

1_Android四大核心组件之Activity(1)


2_Android中的消息通知Toast和Notification

3_Android多点触摸交互处理

4_Android Surface View绘图API详解

5_Android基础知识-传感器,无线传输与媒体硬件功能开发


4_第4阶段|用户界面优化

5_第5阶段|数据存储

6_第6阶段|网络通信

7_第7阶段|混合编程

8_第8阶段|知识点精讲



本文转载自:http://blog.csdn.net/u010489586/article/details/41349313

BobbyLou
粉丝 8
博文 149
码字总数 5825
作品 0
海淀
程序员
私信 提问
极客学院新版抢鲜看 注册即送VIP会员

hi,兄弟。在学习编程时你是不是也遇到过这些问题? 基础差,底子薄,自学压力大? 每天代码bug一大堆,回家倒头就想睡? 新技术更迭太快,不知道学习哪些? 今天,在极客学院,先送福利,再...

极客学院
2014/05/26
5.8K
58
Android学习路径2.0上线,中奖结果公布!

Android学习路径2.0上线,中奖结果公布! 极客学院在2014年5月份推出了国内首个系统化Android学习路径图,无论对于小白用户入门,还是对于特定模块的针对学习,都有很大的帮助。经过将近1年时...

极客学院
2015/05/05
543
4
整理几个自学网站给你!让你也成为一专多能无缺陷的斜杠青年!

生活在这个充满竞争,血腥味十足分分钟钟就会别人取代的大数据移动互联时代,大家一有点时间就会拼命地给自己打鸡血充电学习,让自己可以拥有一专多能无缺陷的斜杠青年!其实,更多人害怕的是...

艺林小宇
2016/05/09
0
0
Android学习路径2.0上线,体验&抢楼赢大奖!

极客学院在2014年5月份推出了国内首个系统化Android学习路径图,无论对于小白用户入门,还是对于特定模块的针对学习,都有很大的帮助。经过将近1年时间的课程积淀和经验积累,并综合了大量用...

极客学院
2015/04/21
1K
41
【极客学院免费直播课】第二期 Android draw9patch切图工具的使用

极客学院android免费网络直播课(第二期) 用户手中漂亮的的UI界面,并非直接来自于设计师呕心沥血创作的效果图,而是由多个单独的切图经由开发同学用技术重新拼贴渲染而来。切图作为设计师与开...

jikexueyuan
2014/04/23
497
1

没有更多内容

加载失败,请刷新页面

加载更多

idea下springboot 项目在static目录下添加文件不生效

idea下springboot 项目在static目录下添加文件不生效 问题描述 是这样子的,我的项目目录结构如下: 我在static目录下,创建了index.html和aaaa.jpg这两个文件。然后,启动服务访问 http://l...

wotrd
昨天
5
0
k8s1.14 一、环境

1. 4台虚拟机 (CentOS Linux release 7.2.1511 (Core) ) 192.168.130.211 master 192.168.130.212 node1 192.168.130.213 node2 192.168.130.214 node3 2. 设置服务器hostname 2.1 设置本机......

ThomasCheng
昨天
4
0
盖茨:如果我现在开创一家公司 将会专注于AI

新浪科技讯,北京时间 6 月 26 日凌晨消息,微软联合创始人比尔·盖茨(Bill Gates)在周一接受采访时表示,如果他今天从哈佛大学辍学并开创一家新公司,那么这家公司将会专注于人工智能(A...

linuxCool
昨天
1
0
聊聊feign的Retryer

序 本文主要研究一下feign的Retryer Retryer feign-core-10.2.3-sources.jar!/feign/Retryer.java public interface Retryer extends Cloneable { /** * if retry is permitted, retur......

go4it
昨天
14
0
HyperLogLog简介

  (1)HyperLogLog简介      在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个...

SEOwhywhy
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部