第一个java程序 Hello World
1新建java项目: day0101_HelloWorld
2新建“类”:HelloWorld
3在类中添加代码:
public class HelloWorld {
public static void main (String[] arge) {
System.out.println(“HelloWorld”);
}
}
java源文件被编译成字节码文件(.class)
*执行时,先启动java虚拟机(jvm)
*虚拟机加载字节码文件
*执行这个类的main方法(程序的入口,整个程序都是从这里开始)
第一个android程序 Hello World
*新建android项目:day0102_HelloWorld
*执行:
右键点击项目->run as->android application
*如果不能执行,尝试删除appcompat.v7
*执行过程:
1)编译
2)将字节码文件编译成dex文件(把很多的class文件合并处理成一个dex文件,加载时只要加载一个就行)
3)打包成apk文件并临时签名(开发者信息)
4)apk文件上传到设备
5)自动安装,启动
Java数据类型
基本类型
1byte = 8 bit
byte 1字节 -2^7到2^7-1
short 2字节 -2^15到2^15-1
int 4字节 -2^31到2^31-1
long 8字节 -2^63到2^63-1
float 4字节 单精度
double 8字节 双精度
char 2字节 表示字符(0~2^16-1)
boolean 1字节 真(true)假(false)
基本类型字面值
*整数字面值是int类型
int a = 7465
long a = 99999999999;//错,右侧是int,但超出
*byte short,char,比int范围小的整数允许用范围内的是直接赋值
byte a = 127.//右侧是byte类型
byte a = 128//错,右侧是int类型
*浮点数字面只是double类型
double a =3.14
float a =3.14//错右侧是double类型
*后缀(只能在字面值上加后缀,大小写都行)
L long
long a = 9999999999//错,超出了
long a = 9999999999L//对,右侧是long型
F float
float a = 3.14f
D double
Double a = 3D
*进制前缀
0x 16进制(0123456789abcdef)
0xff = 255
0 8进制(01234567)
0377 = 255
\u char类型16进制
‘\u0061’ = 97,’a’
基本类型运算规则
*运算结果的数据类型与运算项中范围最大的已知
byte short char int long float double
3/2 得1
3d/2 得1.5
*byte short chat 比int 范围小的帧数运算时,会先自动转成int类型
byte a = 2;
byte b = 3;
byte c = a+b;//错,右侧是int +int,结果是int
*整数运算溢出
int a = Integer.MAX_VALUE;
int b = a+1;//Integer.MIX_VALUE;
300000000*60*60*24*356;\溢出
300000000L*60*60*24*356;\正确
*浮点数运算不精确
*浮点数的特殊值
Infinity(无穷大)(浮点数除零)
3.14/0
Double.MAX_VALUE*2
NaN (Not a nuber)
*基本类型转换
*范围小的 -> 范围大的 (值不变)
byte a = 127; 01111111 ->00000000 00000000 00000000 01111111
byte a = -1; 11111111 -> 11111111 11111111 11111111 11111111
*范围大的 -> 范围小的
需要强制转型
int a = 257;
byte b = (byte)a;
00000000 00000000 00000001 00000001 -> 00000001
类型的最大最小值
这都是jdk类库中的类
调用它的常量MIN_VALUE获得最小值,MAX_VALUE获得最大值
例如:short a = Short.MIN_VALUE(Short和MIN中间有小数点)
short a = Short.MAX_VALUE(同上)
在布局文件中添加textview控件
在MianActivity.java上protected void onCreate(Bundle savedInstanceState) {
下面打代码
TextView tv1 = (TextView) findViewById(R.id.textView1);
用findViewById(R.id.”控件名”)获得控件
tv1是变量名
TextView是tv1的类型(在tv1前加TecrView是因为第一次用所以要先声明,这里声明的是局部变量)
tv1.setText(a+”\n”+b+”\n”+c+”\n”+d+”\n”+e+”\n”+f);
设置textview控件显示的东西
\n是换行符,不能识别\n所以加””
+是连接符
tv1.append(g+”\n”+h);
追加显示
简单错误处理
1.java Exception的处理 1.找到问题出现的代码 consule 2.通过文档查找问题发生的原因 2.Android Exception的处理 1.找到问题出现的代码 Logcat 2.通过文档查找问题发生的原因 3.Android程序无法部署的模拟器 1.clean一下 project-》clean-》选择程序-》OK 2.Logcat没有反应 DDMS中无信息 adb的问题 在DDSM中reset一下 如果不行 在任务管理器中结束adb.exe进程 4,简单的逻辑错误调试方案,在关键位置打印出程序中的关键数值 System.out.println() Log.i(“info”, “”); 5.debug模式
% 取余
= < <= != 判断比较
&& 逻辑与 (*两侧同时是真,结果是真
*任意一侧是假,结果是假
*短路与,左侧是假,右侧被忽略)
|| 逻辑或 (*两侧同时是假,结果是假
*任意一侧是真,结果是真
*短路或,左侧是真,右侧被忽略)
! 逻辑非 (非真是假,非假是真)、
位运算
& 位与运算(两个同时为1,结果为1)
| 位或运算(一个为1,都为1)
^ 异或运算(相同为0,不同为1)
~ 求反(0变1,1变0)
带符号右移位
符号位是0,左侧补0
符号位是1,左侧补1不带符号右移位
不管符号位是0还是1,左侧都补0
<< 左移位,右侧补0
*)移位运算不移动原值
新分配内存空间保存移动结果
*)向右移动1位相当于/2
向左移动1位相当于*2
数学运算
++ 自增
– 自减
Int a = 10;
System.out.println(a++);10
System.out.println(a++);11
三项运算
1?2:3
1是真,执行2;
1是假,执行3;
赋值运算
+=
-=
、=
//=
=
^=
与其他运算符连用,会自动转型
byte a = 10;
a= a + 3;//a已经是int类型了
流程控制
if-else else-if
switch-case-default
for
while
do-while
Java源文件
*公共类名与文件名一致
《HelloWorld.java》
Public class HelloWorld!
*package包
是文件夹,分门别类来存放不同的类
*import导包
指明路径
后面代码中,可以简写类名,而不必写全路径