森纵培训第三天课程总结
2014-01-12 08:01
281 查看
数值型数据类型:
byte,short,int,long(8)
float,double
关键字:keyword,在一种编程语言中,用来表示特定意义的特定标识符;
保留字和关键字是否是同一个意思?
在多种编程语言中,两者意义相同,在java中,有所区别;
此处的“保留”是指将一些标识符做为Java的关键字,但没有任何作用,即没有赋予它们固定的功能。const,goto
字符类型:
关键字:char(character),int(integer)
在不同类型的编程语言中,字符类型都做为一种基本类型存在,但分为单字节和双字节两种形态。
所有的字符个数都是固定的,每个都有固定的编码值;
当我们向内存存储一个字符时,无论单字节还是双字节字符,都只存其编码值;
单字节字符:ASCII,可用的字符为127个,分为可打印字符和不可打印字符
需要我们掌握:c和C++使用
大写英文字母:’A’-‘Z’ 65
小写英文字母:’a’-‘z’ 97
数字字符:’0’-‘9’ 48
注意2个问题:数字字符与数字的关系?
问题1:字符’0’与数字0的关系:’0’== 0 + 48
问题2:大写英文与小写英文的关系:’a’==’A’+32
课下练习1:用一个字节计算出大写字母’A’与小写字母’a’的存储方式。
65:01000001
97:01100001
双字节字符:java和C#使用
双字节编码表:unicode [0,65535]
一个问题:在双字节编码表中,字符’a’占几个字节,汉字’中’占几个字节?
在编码表中,英文字符在靠前的位置,但在实际存储时,只会占1个字节;
另一个问题:ASCII与Unicode两个编码表之间的关系?单字节编码完全包含在双字节编码中。
在范围许可的情况下,整型数据和字符型数据可以互相赋值;
在字符使用时,注意到几个转义字符的应用:
单引号:’\’’ “\’”
双引号:’\”’ “\””
换行符:’\n’ “\n”
字符的基本使用:
char char1 = 'a';
System.out.println("char1: "+char1);
System.out.println("char1: \'"+char1+"\'");
System.out.println("单引号:\'");
System.out.println("双引号:\"");
System.out.println("char1: \'"+char1);
System.out.println("char1: "+char1+"\'");
扩展情况:
//用编码值给字符变量赋值
char ch1 = 66;
System.out.println("ch1 = \'"+ch1+"\'");
//用字符常量给整型变量赋值
int num = 'a';
System.out.println("num: "+num);
Java中的字符类型处理中文:
char ch1 = '中';
System.out.println(ch1+"\t"+(int)ch1);
ch1 = '!';
System.out.println(ch1+"\t"+(int)ch1);
ch1='!';
System.out.println(ch1+"\t"+(int)ch1);
最后一种基本类型:布尔类型 boolean
用来表示“真假”两种状态,非真即假,非假即真。
一个问题:布尔类型的变量占几个字节的存储空间?
实际上,一个boolean类型的变量一个二进制位足够。在java中,用一个字节表示。
java中的布尔类型与C/C++中的布尔类型有何区别?
一个重要的区别是,在Java中不再支持“非零为真”的判断,而用两个关键字来表示“真假”。
boolean b1 = true;
System.out.println("b1: "+b1);
b1 = false;
System.out.println("b1: "+b1);
b1 = (1>2);
System.out.println("b1: "+b1);
b1=(1>2)||(3>1);
对于以上8种内置类型,在后面为了操作的方便,针对每种类型都做了包装,称为包装类。包装类的功能要远大于基本类型。
void类型,这个关键字在Java中只用来修饰方法,表示方法没有返回值;
一个方法没有返回值,用void关键字修饰的方法,这样的方法在结尾处,可以用return;语句结束;也可以将此语句省略;
一个方法没有返回值类型
总结返回值类型,返回值的问题:
一般的方法,都有返回值类型,包括void;
带有void的方法:具有返回值类型,但没有返回值;
构造方法:没有返回值类型,但具有返回值;
一个问题:程序由几种类型的语句构成?
三种:
顺序结构
循环结构
while
结构:while(真假条件){//…}
do-while
do{//…}while(条件);
经典的for(扩展的for循环)
for(;;){//…}
//测试while
int start =1;
int sum = 0;
int num = 100;
while(start<=num){
sum=sum+start;
start=start+1;
}
System.out.println("sum: "+sum);
System.out.println("1 + 2 + 3 +... + 20 = "+sum);
System.out.println("1 + 2 + 3 +... + "+ num+" = "+sum);
一个方法中定义的局部变量(何为局部变量?在方法中的定义的变量,只在定义它的方法中有效),应该做到:
一个变量占一行,并且赋初始值;
输出结果时,尽量做人性化;
“硬编码”和“软编码”;拒绝硬编码,
//复合赋值复习
//单个变量自增减操作 ++/--
int number = 10;
++ number;
//number++; //number = number + 1;
System.out.println("number: "+number);
当单个变量进行自增减时,而且这个操作作为一个独立的语句,此时前缀和后缀没有任何区别,在执行后会得到同样的增减结果;
//复合赋值复习
//单个变量自增减操作 ++/--
//int number = 10;
//int x = ++number;
//System.out.println("number: "+number+",x="+x);
//int y = number++;
//System.out.println("number: "+number+",y="+y);
//System.out.println("nubmer1: "+(number++));//10
//System.out.println("nubmer2: "+(++number));//11
//复合赋值复习
int start = 5;
start++;
start += 3; // start = start + 3; -=/*=//=/%=
一个完整的加法运算:
package com.sunzone.day03;
public class Hello{
public static void main(String []args){
int start = 1;
int sum = 0;
int num = 10;
while(start<=num){
sum += start;
start++;
}
System.out.println("1+2+3+..."+num+"="+sum);
}
}
for(计数器的初始化;循环条件的判断;计数器的自增){
//循环体;
}
for循环的执行流程:
第一步,先执行计数器的初始化工作,整个循环中,此步只执行一次;
第二步,进行循环条件判断,如果为真,执行循环体,如果为假,退出循环;
第三步,条件为真,执行循环;执行后,进行计数器的自增,再来判断…
使用for循环做加法运算:
int sum = 0;
int num = 10;
for(int i=1;i<=num;i++){
sum += i;
System.out.println("\t"+sum);
}
System.out.println("1+2+3+..."+num+"="+sum);
修改代码:
int sum = 0;
int num = 10;
for(int i=1;
i<=num;
sum += i,System.out.println("\t"+sum),i++);
System.out.println("1+2+3+..."+num+"="+sum);
输出同上;
for(int i=1,sum=0,num=10;
i<=num;
sum += i,System.out.println("\t"+sum),i++)
;
课下作业:分别利用while和for循环输出乘法口诀表;
利用循环的嵌套,来解决乘法口诀;
int first = 1; //局部变量,其生命周期为整个方法中
while(first<10){
int second = 1; //局部变量中的块变量,在定义它的块中有效
while(second<10){
System.out.printf("%4d",first*second);
second++;
}
first++;
System.out.println(); //打印一个空行
}
去除乘法口诀中重复数;
将二层循环中的代码修改为:while(second<=fist)...
同样的功能使用for循环:
for(int first=1;first<10;first++){
for(int second=1;second<=first;second++){
System.out.printf("%4d",first*second);
}
System.out.println();
}
在控制台会输出同样的结果。
分支选择结构:在多种可能性选择一种,而且只能选择一种。
if-else
if单独使用,如果符合条件,则执行;如果条件为假,则什么也不做。
int x = 100;
if(x>100){
System.out.println("x > 100");
}
因为条件为假,所以输出语句并不执行;
if-else共同使用,在两种可能性中必须选择一个;
int x = 100;
if(x>=100){
System.out.println("x >= 100");
}else{
System.out.println("x < 100");
}
iii、 if-else if-else if-else在多种可能中选择一种;
int score= 87;
if(score<0 || score>100){
System.out.println("分数无效!");
}else if(score>=0 && score<60){
System.out.println("成绩不及格!");
}else if(score>=60 && score<70){
System.out.println("及格!");
}else if(score>=70 && score<=80){
System.out.println("优良!");
}else if(score>80 && score<100){
System.out.println("优秀!");
}else{
System.out.println("满分!");
}
当我们写完一段代码后进行测试时,要考虑到自变量的测试边界。如上述中的成绩级别问题中,
switch
switch(整数){
case value1: ‘’..
case value2: ..//
default: …
}
在C,C++和Java的低版本(7.0之前),括号中只支持整数类型,java中的switch()括号中可以是char,byte,short,int这几种,不能是long,也不能是其他对象;
switch的基本用法:
int season = -2;
switch(season){
case 1: System.out.println("春天");break;
case 2: System.out.println("夏天");break;
case 3: System.out.println("秋天");break;
case 4: System.out.println("冬天");break;
default:System.out.println("错误数据!");break;
}
在7.0版本之后,swicth括号中可以支持字符串类型;
String key = "51";
switch(key){
case "0":System.out.println("zero");break;
case "1":System.out.println("one");break;
case "2":System.out.println("two");break;
case "3":System.out.println("three");break;
case "4":System.out.println("four");break;
case "5":System.out.println("five");break;
case "6":System.out.println("six");break;
case "7":System.out.println("seven");break;
case "8":System.out.println("eight");break;
case "9":System.out.println("nine");break;
default:System.out.println("other");break;
}
一个计算题:
int first = 10;
int second = 20;
char operator = '/';
switch(operator){
case '+':
System.out.println(first + " + " + second +
" = " + (first+second));break;
case '-':
System.out.println(first + " - " + second +
" = " + (first-second));break;
case '*':
System.out.println(first + " * " + second +
" = " + (first*second));break;
case '/':
System.out.println(first + " / " + second +
" = " + (first/second));break;
case '%':
System.out.println(first + " % " + second +
" = " + (first%second));break;
default:System.out.println("不运算");break;
}
将上面的代码进化简化:
int first = 10;
int second = 20;
char operator = '*';
int result = 0;
switch(operator){
case '+':
result=first+second;break;
case '-':
result=first-second;break;
case '*':
result=first*second;break;
case '/':
result=first/second;break;
case '%':
result=first%second;break;
default:System.out.println("不运算");break;
}
String msg = first + "" + operator + second + "="+result;
System.out.println(msg);
运算符的问题:
基本的逻辑运算符:&& || !
扩展的逻辑运算符:& |
唯一的一个三目运算符:(真假条件)?(条件为真的结果):(条件为假的结果) ?:
有的运算符既是单目又是双目: 5+12 -12 *
数值型数据类型:
byte,short,int,long(8)
float,double
关键字:keyword,在一种编程语言中,用来表示特定意义的特定标识符;
保留字和关键字是否是同一个意思?
在多种编程语言中,两者意义相同,在java中,有所区别;
此处的“保留”是指将一些标识符做为Java的关键字,但没有任何作用,即没有赋予它们固定的功能。const,goto
字符类型:
关键字:char(character),int(integer)
在不同类型的编程语言中,字符类型都做为一种基本类型存在,但分为单字节和双字节两种形态。
所有的字符个数都是固定的,每个都有固定的编码值;
当我们向内存存储一个字符时,无论单字节还是双字节字符,都只存其编码值;
单字节字符:ASCII,可用的字符为127个,分为可打印字符和不可打印字符
需要我们掌握:c和C++使用
大写英文字母:’A’-‘Z’ 65
小写英文字母:’a’-‘z’ 97
数字字符:’0’-‘9’ 48
注意2个问题:数字字符与数字的关系?
问题1:字符’0’与数字0的关系:’0’== 0 + 48
问题2:大写英文与小写英文的关系:’a’==’A’+32
课下练习1:用一个字节计算出大写字母’A’与小写字母’a’的存储方式。
65:01000001
97:01100001
双字节字符:java和C#使用
双字节编码表:unicode [0,65535]
一个问题:在双字节编码表中,字符’a’占几个字节,汉字’中’占几个字节?
在编码表中,英文字符在靠前的位置,但在实际存储时,只会占1个字节;
另一个问题:ASCII与Unicode两个编码表之间的关系?单字节编码完全包含在双字节编码中。
在范围许可的情况下,整型数据和字符型数据可以互相赋值;
在字符使用时,注意到几个转义字符的应用:
单引号:’\’’ “\’”
双引号:’\”’ “\””
换行符:’\n’ “\n”
字符的基本使用:
char char1 = 'a';
System.out.println("char1: "+char1);
System.out.println("char1: \'"+char1+"\'");
System.out.println("单引号:\'");
System.out.println("双引号:\"");
System.out.println("char1: \'"+char1);
System.out.println("char1: "+char1+"\'");
扩展情况:
//用编码值给字符变量赋值
char ch1 = 66;
System.out.println("ch1 = \'"+ch1+"\'");
//用字符常量给整型变量赋值
int num = 'a';
System.out.println("num: "+num);
Java中的字符类型处理中文:
char ch1 = '中';
System.out.println(ch1+"\t"+(int)ch1);
ch1 = '!';
System.out.println(ch1+"\t"+(int)ch1);
ch1='!';
System.out.println(ch1+"\t"+(int)ch1);
最后一种基本类型:布尔类型 boolean
用来表示“真假”两种状态,非真即假,非假即真。
一个问题:布尔类型的变量占几个字节的存储空间?
实际上,一个boolean类型的变量一个二进制位足够。在java中,用一个字节表示。
java中的布尔类型与C/C++中的布尔类型有何区别?
一个重要的区别是,在Java中不再支持“非零为真”的判断,而用两个关键字来表示“真假”。
boolean b1 = true;
System.out.println("b1: "+b1);
b1 = false;
System.out.println("b1: "+b1);
b1 = (1>2);
System.out.println("b1: "+b1);
b1=(1>2)||(3>1);
对于以上8种内置类型,在后面为了操作的方便,针对每种类型都做了包装,称为包装类。包装类的功能要远大于基本类型。
void类型,这个关键字在Java中只用来修饰方法,表示方法没有返回值;
一个方法没有返回值,用void关键字修饰的方法,这样的方法在结尾处,可以用return;语句结束;也可以将此语句省略;
一个方法没有返回值类型
总结返回值类型,返回值的问题:
一般的方法,都有返回值类型,包括void;
带有void的方法:具有返回值类型,但没有返回值;
构造方法:没有返回值类型,但具有返回值;
一个问题:程序由几种类型的语句构成?
三种:
顺序结构
循环结构
while
结构:while(真假条件){//…}
do-while
do{//…}while(条件);
经典的for(扩展的for循环)
for(;;){//…}
//测试while
int start =1;
int sum = 0;
int num = 100;
while(start<=num){
sum=sum+start;
start=start+1;
}
System.out.println("sum: "+sum);
System.out.println("1 + 2 + 3 +... + 20 = "+sum);
System.out.println("1 + 2 + 3 +... + "+ num+" = "+sum);
一个方法中定义的局部变量(何为局部变量?在方法中的定义的变量,只在定义它的方法中有效),应该做到:
一个变量占一行,并且赋初始值;
输出结果时,尽量做人性化;
“硬编码”和“软编码”;拒绝硬编码,
//复合赋值复习
//单个变量自增减操作 ++/--
int number = 10;
++ number;
//number++; //number = number + 1;
System.out.println("number: "+number);
当单个变量进行自增减时,而且这个操作作为一个独立的语句,此时前缀和后缀没有任何区别,在执行后会得到同样的增减结果;
//复合赋值复习
//单个变量自增减操作 ++/--
//int number = 10;
//int x = ++number;
//System.out.println("number: "+number+",x="+x);
//int y = number++;
//System.out.println("number: "+number+",y="+y);
//System.out.println("nubmer1: "+(number++));//10
//System.out.println("nubmer2: "+(++number));//11
//复合赋值复习
int start = 5;
start++;
start += 3; // start = start + 3; -=/*=//=/%=
一个完整的加法运算:
package com.sunzone.day03;
public class Hello{
public static void main(String []args){
int start = 1;
int sum = 0;
int num = 10;
while(start<=num){
sum += start;
start++;
}
System.out.println("1+2+3+..."+num+"="+sum);
}
}
for(计数器的初始化;循环条件的判断;计数器的自增){
//循环体;
}
for循环的执行流程:
第一步,先执行计数器的初始化工作,整个循环中,此步只执行一次;
第二步,进行循环条件判断,如果为真,执行循环体,如果为假,退出循环;
第三步,条件为真,执行循环;执行后,进行计数器的自增,再来判断…
使用for循环做加法运算:
int sum = 0;
int num = 10;
for(int i=1;i<=num;i++){
sum += i;
System.out.println("\t"+sum);
}
System.out.println("1+2+3+..."+num+"="+sum);
修改代码:
int sum = 0;
int num = 10;
for(int i=1;
i<=num;
sum += i,System.out.println("\t"+sum),i++);
System.out.println("1+2+3+..."+num+"="+sum);
输出同上;
for(int i=1,sum=0,num=10;
i<=num;
sum += i,System.out.println("\t"+sum),i++)
;
课下作业:分别利用while和for循环输出乘法口诀表;
利用循环的嵌套,来解决乘法口诀;
int first = 1; //局部变量,其生命周期为整个方法中
while(first<10){
int second = 1; //局部变量中的块变量,在定义它的块中有效
while(second<10){
System.out.printf("%4d",first*second);
second++;
}
first++;
System.out.println(); //打印一个空行
}
去除乘法口诀中重复数;
将二层循环中的代码修改为:while(second<=fist)...
同样的功能使用for循环:
for(int first=1;first<10;first++){
for(int second=1;second<=first;second++){
System.out.printf("%4d",first*second);
}
System.out.println();
}
在控制台会输出同样的结果。
分支选择结构:在多种可能性选择一种,而且只能选择一种。
if-else
if单独使用,如果符合条件,则执行;如果条件为假,则什么也不做。
int x = 100;
if(x>100){
System.out.println("x > 100");
}
因为条件为假,所以输出语句并不执行;
if-else共同使用,在两种可能性中必须选择一个;
int x = 100;
if(x>=100){
System.out.println("x >= 100");
}else{
System.out.println("x < 100");
}
iii、 if-else if-else if-else在多种可能中选择一种;
int score= 87;
if(score<0 || score>100){
System.out.println("分数无效!");
}else if(score>=0 && score<60){
System.out.println("成绩不及格!");
}else if(score>=60 && score<70){
System.out.println("及格!");
}else if(score>=70 && score<=80){
System.out.println("优良!");
}else if(score>80 && score<100){
System.out.println("优秀!");
}else{
System.out.println("满分!");
}
当我们写完一段代码后进行测试时,要考虑到自变量的测试边界。如上述中的成绩级别问题中,
switch
switch(整数){
case value1: ‘’..
case value2: ..//
default: …
}
在C,C++和Java的低版本(7.0之前),括号中只支持整数类型,java中的switch()括号中可以是char,byte,short,int这几种,不能是long,也不能是其他对象;
switch的基本用法:
int season = -2;
switch(season){
case 1: System.out.println("春天");break;
case 2: System.out.println("夏天");break;
case 3: System.out.println("秋天");break;
case 4: System.out.println("冬天");break;
default:System.out.println("错误数据!");break;
}
在7.0版本之后,swicth括号中可以支持字符串类型;
String key = "51";
switch(key){
case "0":System.out.println("zero");break;
case "1":System.out.println("one");break;
case "2":System.out.println("two");break;
case "3":System.out.println("three");break;
case "4":System.out.println("four");break;
case "5":System.out.println("five");break;
case "6":System.out.println("six");break;
case "7":System.out.println("seven");break;
case "8":System.out.println("eight");break;
case "9":System.out.println("nine");break;
default:System.out.println("other");break;
}
一个计算题:
int first = 10;
int second = 20;
char operator = '/';
switch(operator){
case '+':
System.out.println(first + " + " + second +
" = " + (first+second));break;
case '-':
System.out.println(first + " - " + second +
" = " + (first-second));break;
case '*':
System.out.println(first + " * " + second +
" = " + (first*second));break;
case '/':
System.out.println(first + " / " + second +
" = " + (first/second));break;
case '%':
System.out.println(first + " % " + second +
" = " + (first%second));break;
default:System.out.println("不运算");break;
}
将上面的代码进化简化:
int first = 10;
int second = 20;
char operator = '*';
int result = 0;
switch(operator){
case '+':
result=first+second;break;
case '-':
result=first-second;break;
case '*':
result=first*second;break;
case '/':
result=first/second;break;
case '%':
result=first%second;break;
default:System.out.println("不运算");break;
}
String msg = first + "" + operator + second + "="+result;
System.out.println(msg);
运算符的问题:
基本的逻辑运算符:&& || !
扩展的逻辑运算符:& |
唯一的一个三目运算符:(真假条件)?(条件为真的结果):(条件为假的结果) ?:
有的运算符既是单目又是双目: 5+12 -12 *