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-F2.特点:逢六十进位.3.十六进制是二进制的简写,方便专业人员书写二进制数据.4.16进制的基数为16,权为16^n(16的n次方)5.在Java代码中十六进制数用0X或者0x做前缀(0是数字零,而不是字母o)
0x1000=1x16的3次方...0x1=1x16的0次方
示例:(5E)16=(_______)105*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=(______)161101 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):
System.out.println(Math.pow(2, 8)-1);
4_十进制与其它进制的转换
1.十进制转化为二进制数
规律:不断除以2,保留余数,商为0时不再除2.将所有余数倒序排列.示例:(13)10=(______)213/2 6 余数16/2 3 余数03/2 1 余数11/2 0 余数1
结果:(13)10=(1101)2
2.十进制转化为十六进制数
规律:不断除以16,保留余数,商为0时不再除16.将所有余数倒序排序.示例:(138)10=(______)16138/16 8 余数108/16 0 余数8结果(138)10=(8A)16
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.3cpu数量: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); } } }
提示重复局部变量名称
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^312.Interger.MAX_VALUE:int类型的最大值:2^32-13.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)20010逐位取反0011 加1(1101)2=-34.两数相加,若最高位(符号位)有进位,则进位被舍弃.例如:4位二进制补码中,5-3的结果是20101 5+1101 -3_______________0010 23.为什么使用补码
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 44.补码运算的特征
1.计算机中正数和负数的关系是取反加一.示例,在四位二进制数中,已知3的二进制值0011,若要求-3,则0011 31100 逐位取反1101 +1则-3的二进制值是1101
2.补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出.示例 四位二进制的补码运算中,请计算5+4的结果0101 5+ 0100 4_________1001 -7
3.4位二进制补码最多能表示2^4(16)个数,数的范围是-8~74.8位二进制补码最多能表示2^8(256)个数,数的范围是-128~1275.16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~327676.32位二进制补码最多能表示2^32个数,数的范围是-2^31~2^31-15.补码运算的原理
正数+负数=模.模:某种类型数据的总数,例如:4位二进制的模是2^4=168位二进制的模是2^8=25616位二进制的模是2^16=6553632位二进制的模是2^32=4294967296
示例 在4位二进制中,7+(-7)=160111+ 1001______10000因此,负数= 模-正数,这就是逐位取反加1的原因-7=16-710000-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基数:103_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=12901111111 逐位取反再加1-127
示例-2大类型的数据超过了小类型的位数示例.int i =257;byte b=(byte)i;变量b的值是多少?1,0000,0001=2570000,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的值是2String space="";space+=" ";2)后加1:i++例如:int i =1;System.out.println(i++)输出结果是1,变量i的值是23.自增n
自增n:i+=n等效于i=i+n示例:i+=5;4.自减1
1.先减1:--i示例:int i =1;System.out.println(--i)输出结果是0,变量i的值是02.后减1:i--例如:int i=1;System.out.println(i--);输出结果是1,变量i的值是05.自减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
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的值进行判断,根据月份显示相应的天数.
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); } }
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.Scanner1.先输入Scanner2.ctrl+shift+o3.自动导入 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); } }
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){循环内容}
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.设置classpathUbuntu下的classpathhttp://jingyan.baidu.com/article/db55b609a3f6274ba30a2fb8.html4.设置path设置环境变量的步骤:步骤1.设置java的一个总路径Java_HOME;步骤2 设置命令路径PATH;步骤3.设置加载类路径CLASSPATH7_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 configurations2.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 选择 zip17_修改项目名、包名和类名
选中项目或者报名和类名,按下shift+F618_Math类
1.Math类是JDK中用于数学运算的工具类.2.Math类在rt.jar的java.lang包下
ctrl+f11 RUNsyso+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+F2.添加/取消单行注释的快捷键:Ctrl+/3.添加多行注释的快捷键:Ctrl+shift+/4.取消多行注释的快捷键:Ctrl+Shift+\5.Android 快捷键http://jingyan.baidu.com/article/574c5219ce55e96c8d9dc105.htmlhttp://blog.csdn.net/altair86/article/details/8972178
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输入方法名:feeling1. Select some code in Android Studio, but don't select say the first character on a line2. 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; } }
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); } } }
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,"张三"); } }
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(){ } }
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 范围 发生在一个类中 发生在继承中
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 ""; } }
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.数组越界异常:ArrayIndexOutOfBoundsException2.数字格式化异常:NumberFormatException3.算数异常:ArithmeticException4.空指针异常: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); } } }
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基础知识-传感器,无线传输与媒体硬件功能开发