java作为一个类C语言,和C语言的语法基本相同,所以对于有C语言基础的同学,入门可以说非常快。下面我们就说说学习java时一些应该注意的问题吧:
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
"5+5="+5+5 运行结果是:5+5=55
"5+5="+(5+5) 运行结果是:5+5=10
转义字符:通过“\”来转变后面字母或者符号的含义。
\n:换行;\b:退格;\t:制表符;\r:按下回车;Windows回车符是由两个字符来表示的。\r\n
system.out.println("\"hah\"") 结果:"hah"
char a='你';
“==”是比较运算符;结果:true或false;
逻辑运算符用于连接boolean类型的表达式。x>3 & x<6
^:异或;两边都相同为假;反之为真;
&和&&的区别:&:无论左边是真是假;右边都运算;
&&:当左边为假时右边不用算。
||:左边为真。右边不用算。
位运算符:
<<:其实就是乘以2的移动的位数次幂;
>>:就是除以2的移动的位数次幂;
>>:带符号右移。看最高位
>>>:无符号右移。最高位都用0
位运算符&:转换为二进制再计算。
~:反码(~6=-7)
一个数异或同一个数两次结果还是那个数。(加密)
位运算是高效的运算!
有局限的:
n=m+n;
m=n-m;
n=n-m ;
技巧:
x=x^y;
y=x^y;
x=x^y;
简单:
temp=x;
x=y;
y=temp;
switch的特点:支持四种类型:byte short int char ,case和default的顺序是先执行第一个case,没有匹配的才执行default。结束switch的两种情况:遇到break和执行到switch的最后一个花括号。
if和switch语句很像,具体什么场景下应使用那个语句呢?
如果判断的具体数值不多,而是符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用switch语句,效率比较高。
其他情况:对区间,对结果为布尔类型(boolean)的判断,使用if,if的使用范围更广。
JDK的升级:7.0可以判断字符串,5.0可以判断枚举类型。
各种类型在java中占多少个字节呢?
1.boolean 类型视编译环境而定;
2.byte ,boolean:1字节 byte:-128~127 boolean:true false;
3.char,short: 2字节 char:0~2^16-1 short:-2^15~2^15-1;(c语言中char是1个字节)
4.int,float:4字节 int:-2^31~2^31-1 float:1.4013E-45~3.1028+38;
5.long,double:8字节 long:-2^63~2^63-1
double:4.9E-324~1.7977E+308;
(1字节=8bit 即在计算机中用8个0或1表示一个单位。)
byte、short、int、char型进行运算时,都是转换为int型。如char c ='a'; int d = c + 20;这种会先把c转换为int即转换为c对应的ASCII码进行运算。float会转换成double型。还有就是数据“类型小的”跟数据“类型大的”想运算时,会把小的数据类型转换为数据类型大的然后运算。如:long big = 100;int small = 100; long sum = big + small;运算时会先把small转换为long型的然后运算。
转换顺序:
byte->(short,char )->int->long->float->double
多种类型数据混合运算时,系统首先将所有数据类型转换为容量最大的那种数据类型再计算。
java中涉及byte,short和char类型数据的运算,首先会把这些数据转换为int型,计算结果是int型数据。例如两个byte型相加结果是int型
char型数据向整型转换时,是转换为对应的ASCII代码值。
char c=‘c’; int i=c;System.out.println("i="+i); 结果i=99
而byte,short,char三种数据是平级的,之间的转换要用强制转换。
*for 和while 的区别:
作用域的区别;控制次数用for。
注意:用for能写出来的用while的也能写出来。
变量有自己的作用域,对于for如果将循环增量由于控制定义在for语句中。
该变量只在for语句内起作用。for执行完毕就释放;
总结:当某些语句执行很多次时就用循环语句;
*两种最简单的无限循环模式:
while(ture){}
for(;;){}//默认是ture;
*尖朝上,改变条件,让条件随着外循环变化;
尖朝下,改变初始化值,让初始化随着外循环变化;
#####
####*
###**
##***
#****
*****
for (int i = 0 ;i<7 ;i++ ) { for (int j = i;j<7 ;j++ ) { System.out.print("#"); } for (int k = 0;k<i ;k++ ) { System.out.print("*"); } System.out.println(); }
*记住:
1.break和continue语句的范围;
2.break和continue单独存在时.下面可以有任何语句.因为都执行不到,那样的话系统会提示出错了.
3.continue只作用于循环结构(loop).
4.break作用于switch和loop
void:函数没有具体返回值类型的情况.
当函数的返回值类型为void时,函数中的return可以省略不写,写上也不错.
重载(overload)和参数列表有关;
什么时候用重载:
1,当定义的功能相同,但参与运算的未知内容不同.(注意:重载和返回值类型没有关系。重载只和函数名有关。)
那么,这时候就定义一个函数名称以表示其功能.方便阅读.通过含参数列表不同来区别同名的函数;
比如:
void show(int x){}
int show(char y,double z){} //重载了。