您的位置:首页 > 其它

森纵培训第三天课程总结

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 *
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: