Java学习笔记之基础学习

来源:互联网 发布:为什么会迷恋网络 编辑:程序博客网 时间:2024/05/29 16:15

Java学习笔记之基础学习

一、java与C语言的区别

由于在大学时只学过C语言,现在开始学java语言,总感觉C语言在脑海中“先入为主”的观念对java语言的学习有一定的干扰(虽然这两个语言在一些方面有很高的相似性)。下面对java基础阶段遇到的问题做一些初步的总结。

1.   main函数的区别

C语言中main函数可以有返回值(一般为int类型),也可以没有返回值(一般为void关键字),例如:

int  main(…)        //有返回值

void  main(…);    //无返回值

C语言中的main函数可以有参数(第一个参数是:intargc,表示命令行中参数的个数,第二个参数是char* argv[]指向字符串的指针数组),也可以没有参数。

例如:

int  main(int argc char * argv[])       //有返回值,有参数

void  main( void )                              //无返回值,无参数

java中main函数没有返回值(为void关键字),有一个参数(String[]args),java的main函数(方法)必须是如下定义,这是java的规范。

public  static  void main ( String[ ]  args )

初学时,经常把C语言的习惯带到java中,

例如 public static int main(String[] args)…编译时就会报错。

2.   条件表达式的区别

在C语言中表示真/假的变量一直是由int类型来表示,C99新添加了_Bool类型。一个布尔变量只有1(真)或0(假)两种情况。并且C语言把任何非零的值都认为是真,零就是假。如果编译器不支持C99标准可以使用int来代替_Bool,所以C语言中if和while的条件判断语句的值可以是_Bool型的真(1)和假(0),也可以是int类型的0和非零。(本段参照《CPrimer Plus第五版中文版》的124页)。

例如:

int a=1, b=2;

if(a<b){           //条件表达式的值为布尔类型的:true

       printf(“a比b小”);

}

int i = 3;

while(i){          //条件表达式的值为int类型的:3

printf(“a比b小”);

}

在java中表示真假的变量只能是boolean类型,且值只能是true或false,不能是int或其他类型。

例如:

boolean a = true;

while(a){

        System.out.println(“这是死循环语句”);

}

注意:在java中真/假不能用int类型的非零和零表示。

3.   输出语句print的区别

在C语言中,打印语句printf()函数的每个参数之间是用逗号“,”隔离,而在java中System.out.println()函数只能用连接符“+”号来隔离不同类型的参数。

例如:printf("%d, %o", a, a);             //C语言输出语句

System.out.println(12+’a’+”hello”);    //java输出语句

二、java中数据类型和数据类型转换

       1、java中有基本数据类型和引用数据类型

基本数据类型:4类8种

整数类型:字节数:

byte  1

short            2

int  4

long  8

浮点型:

float  4

double  8

字符型:(无符号类型,范围:0---65535)

char 2

布尔型:

boolean      1或0

注意:整数默认使用int类型,浮点数默认使用的 double类型。

例如:

byte a=0,b=3;byte c =a+b;     //错误,因为byte类型参与计算时默认是int类型

改为:byte c = (byte)(a+b);    //需加强制类型转换

float f= 1.1  //错误,因为浮点数默认使用的 double 类型

改为:float f = 1.1f或float  f = 1.1F       //需加上显式类型声明

引用数据类型:

       类 class

       接口 interface

       数组 [ ]

2、强制类型转换:

大的数据类型向小的数据类型转换。需要程序猿手动完成。

格式:目标类型 变量名=(目标类型)(被转换的数据);

例如:    

byte  b;

byte  b1 = 3;

byte  b2 = 4;

b = (byte)(b1+b2);//byte类型参与运算时自动转换为int类型。

3、隐式类型转换:

小的数据类型向大的数据类型转换时,编译器自动完成。

例如:

inti = 4;

shorta = 3;

i+a 的结果是int型的7,因为short型的a和int型的i参与计算时,a自动先被转换成int类型,然后在参与运算。

数据类型的转换顺序:

byte、short、char →int → long → float → double

注意:byte,short,char相互之间不转换,他们参与运算时首先转换为int类型,然后在参与运算。

三、运算符的区别

1、 逻辑运算符 && 和 & 的区别?

1.1、双与“&&”也叫“短路与”,当运算符的左边表达式为假时右边不执行,整个表达式为假,该运算符执行速度快,效率高,例如:

int x = 1,y = 1;

if(x++==2 && ++y==2) {

         x =7;

}

System.out.println("x="+x+",y="+y);

结果:x = 2, y = 1;

1.2、单与“&”不管运算符的左边表达式是否为假,都执行右边表达式,该运算符执行效率低。例如:

int x = 1,y = 1;

if(x++==2 & ++y==2) {

         x =7;

}

System.out.println("x="+x+",y="+y); 

结果:x=2, y=2

注意:单与“&”和双与“&&”的逻辑运算的执行结果一直,但实际项目中推荐使用双与“&&”逻辑运算。

2、 == 与= 的区别

== 是判断运算符,

= 是赋值运算符

四、控制跳转语句break、continue和return的区别

       break: 结束当前循环,程序执行循环后面的代码

       continue:结束本次循环,继续下一次循环

       return: 结束当前方法,return后面的语句不执行

五、方法重载

在同一个类中,方法名相同、方法的参数个数或者参数类型不同,叫做方法重载

注意:方法重载是在同一个类中,与方法的返回值类型无关,只看方法名和参数列表。在调用时,JVM虚拟机通过参数列表的不同来区分同名方法。

例如:下列哪个选项与show不是函数重载?

class Demo {

void show(int a,int b,floatc){}

}

A.voidshow(int a,float c,int b){}

B,voidshow(int x,int y,float z){}

C.intshow(int a,float c,int b){return a;}

D.intshow(int a,float c){return a;}

答案B,因为B选项的参数个数和参数类型和示例中的一致,不符合方法重载的定义。

六、System.out.println()函数的输出组合方式

下列程序执行的结果是:

publicclass Test() {

publicstatic void main(String[] args) {

              System.out.println(“”+’a’+1);

}

}

结果是:a1

System.out.println()函数的输出组合方式有:

数字加字符:结果输出是数字:1+'a'=98

字符加数字:结果输出是数字:‘a’+1=98

字符加字符串:结果输出是字符串:‘a’+“bcd”=abcd

字符串加字符:结果输出是字符串:“bcd”+‘a’=bcda

字符串加数字:结果输出是字符串:“bcd”+1=bcd1

数字加字符串:结果输出“是”字符串:1+ “bcd” =1bcd

七、s += 1和s=s+1的区别

1、java中“+=”运算符隐藏了强制类型转换,例如:

short  s = 23;

s += 23;   //本句相当于s = (short)( s+23 );

2、s=s+1 需要加强制类型转换,例如

short  s = 23;

s = s + 23 ;           //错误,因为在java中short类型的变量S在参与运算时先被转换成int类型,然后在参与运算,

此处的结果是int类型,需要加上强制类型转换,即s = (short)(s + 23).

本文是在学习java基础时,对java基础部分容易混淆的知识点,做一些简要的总结,如有遗漏或错误,欢迎大家批评指正

0 0
原创粉丝点击