1.内置数据类型的学习
Java中的数据类型分为两种:一种是基本数据类型(也叫内置数据类型),另一种是引用类型。Java中的内置数据类型有8种,分别是byte、short、int、long、float、double、char、boolean。
byte:字节类型,占一个字节的存储空间,数据范围是-128~127。
short:短整型,双字节,占两个字节的存储空间,数据范围是[-327678,32767]。
int:整型,是最基本的数据类型,占4个字节的存储空间,数据范围是[-2^31,2^31-1]。
long:长整型,占8个字节的存储空间,是所用整型数据中占内存最多的。
对于以上四种数据类型,无论哪一种,都有一个特点,通过整型变量存取数据都是精确的,不会出现误差。还有一点,整数间的任何运算,其结果仍是整数。
实数类型有两种:单精度的float和双精度的double,这类数据类型的存取都是不准确的。在Java中控制实数的精度(即小数点位数)是这样的一种格式:
System.out.printf("%10.5f",value);——>保留5位小数。
char:字符类型,java中的字符类型属于双字节类型,即一个字符由两个字节来保存,它的编码表是Unicode编码,属于双字节编码。对于一个字符来说,处理要考虑其编码值,其编码值从0到65535,即65536个字符,其中包含了大量的汉字。汉字的Unicode编码范围为:’\u4e00’-‘\u9fa5’。对于字符类型,可以用编码值对其赋值。对字符进行强制转换成int型可以知道其Unicode编码值。
eg:char ch1 = 65;char ch2 ='B';char ch3 = '汉';syso((int)',');//结果为44
转义字符的应用:
回车:'\r' (之前不知道这个字符具体有什么用,测试一下)
作用是'\r'使得光标重新回到这一行的开头,如果后面有要输出的内容,会把之前这一行的内容进行覆盖。
换行:'\n';单引号:'\'';双引号:'\"';制位表:'\t';(表示间隔一定的制位符输出)字符串表示回车换行:"\r\n"。
boolean:布尔类型,只有两个值:false和true,分别用来表示真和假的两种状态。
eg:
int x = 10;
int y =10;
boolean b= x>y &(x=y++) >5;
System.out.println(x+','+y); //结果为65
System.out.println("x,y:"+x+','+y); //结果为x,y:10,11
//比较
boolean b = x>y && (x = y ++)> 5; //第二个表达式未进行运算
System.out.println(x+','+y); //结果为64
System.out.println("x,y:"+x+','+y); //结果为x,y:10,10
比较&&和&的区别:
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符的两边的表达式都为true时,整个结果才为true,否则只要有一个为false,结果为false。
&&还具有一个短路功能,即如果第一个表达式为false,则不再计算第二个表达式的。就像上述例子一样。当&操作符两边的表达式不是boolean类型,&表示按位与操作。
System.out.println(x+','+y);','字符相当于转化成起Unicode值与x和y进行了加法运算啦。','字符的Unicode值为44.
2.三种循环
1)while循环
While循环中将计数器定义赋值,循环条件判断,计数器的增减,三个表达式不在同一位置声明定义。与while有关的循环特点基本是循环次数不确定(次数是固定的,但是不知道)。
While循环退出的情况分为两种:从while后面的括号中退出;从循环体中退出。
从循环体中退出通常设计为恒真循环。
eg:
while(true){
sum += start;
start ++;
if(start>end){
break;//break关键字主要用在循环中,用于退出当前层循环
}
}
System.out.println("1+2+3+...."+ end + " = " + sum);
2)do-while循环
int sum = 0;
int start = 1;
do{
//执行循环体
sum += start++;
}while(start<=100);
System.out.println("sum: "+sum);
对于while
和
do-while
,只有一个区别,
while
循环可能一次也不执行,而
do-while
至少执行一次。对于
do-while
循环来说,它至少执行一次,再来进行判断。即使第一次判断条件就为假,循环也执行了一次循环。
3)for循环
for循环中将计数器定义赋值,循环条件判断,计数器的增减,三个表达式在同一位置声明定义。与for有关的循环特点基本是循环次数是确定的。
eg:for(int i = 0;i<=n ; i++)
常规for循环的执行过程:
当计数器初始化(只一次)之后,利用循环条件判断表达式进行判断,如果为真,则执行循环体中的代码,执行完之后,进入计数器的增加部分,再到判断表达式中进行判断,为真,继续执行,如为假,循环结束。依次周而复始。
3.几个典型例子的说明
1)定义两个整数,分别用来表示行数和列数,用while循环,用字符*打印出来一个矩形。
*****************
*****************
*****************
*****************
用两个while循环控制外层和内层
private static void PrintRectangle(int m,int n){
int i = 0; //控制行
int j = 0; //控制列
while(i <= m)
{
j=0; //关键:每次循环一行之后,j都是从零开始
while(j <= n)
{
System.out.print("*");
j++;
}
System.out.println();
i++;
}
}
2
)用while循环来解决一下“斐波那契数列”问题。
已知有两个值,f0=0,f1=1;之后每个后面的值都等于前两个值之和。前面的若干个数为:
0,1,1,2,3,5,8,13,21,…..要求输出前40项。
private static void PrintFun2(){ // 斐波那契数列问题
int f0 = 0;
int f1 = 1;
int times = 19;
int time = 1;
System.out.printf("%-10d",f0); //调用C语言的输出格式,控制间距
System.out.printf("%-10d",f1);
while(time <= times){
System.out.printf("%-10d",f0);
System.out.printf("%-10d",f1);
f0 = f0+f1;
f1 = f0+f1;
time++;
}
}
3
)打印乘法口诀。
a) 打印原始的乘法口诀
b) 打印没有重复值的乘法口诀
private static void PrintAllMultiplication(){ //完整的乘法口诀
{
int x = 1, y = 1;
while (x <= 9)
{
y=1;
while (y <= 9)
{
System.out.print(x+"*"+y+"="+x * y+"\t"); //注意要使用\t制位符进行间距的控制。
y++;
}
System.out.print("\n");
x++;
}
}
}
private static void PrintMultiplication(){ //无重复乘法口诀表
{
int x = 1;
// int y=1;变量的可见范围(生命周期)
while (x <= 9)
{
int y = 1;
while (y <= x)
{
System.out.print(x+"*"+y+"="+x * y+" ");
y++;
}
System.out.print("\n");
x++;
}
}
}