黑马程序员技术交流社区
标题:
java自学笔记01
[打印本页]
作者:
阿秋
时间:
2015-7-18 17:24
标题:
java自学笔记01
/*标识符*/
注意要点:
1.标识符是由26个字母,0-9的数字,和_及$组成;
2.标识符的开头不能用数字,不能用关键字;
3.总结的规则:
包名:多单词组成时,所用字母都小写,loveworld;
类名及接口:多单词组成时,所有单词的首字母都大写,LoveWorld;
变量名及函数名:多单词组成时,第一个单词小写其余单词首字母大写,qiuRuiGang;
常量名:多单词组成时,所有字母都大写,并且单词与单词之间用_连接,QIU_RUI_GANG;
/*三目运算符*/
class Q1
{
public static void (String[] args)
{
int s=7;
s=(s==7?0:1);//从中可以看出三目运算符的最左边是boolean型表达式,所以用==
System.out.println(s);
}
}
/*进制特点*/
十六进制的前缀是"0x" 例:System.out.println(0x3c);
/*进制的规定*/
1.八进制必须要以前缀0开头,不能包含除0~7以外的数如字母和8或9.
2.十六进制必须要以前缀0x或0X开头,不能包含0~F其他的数字或字母。
/*进制转换*/
二进制和十进制的转换:
1.十进制转二进制 例:60转二进制方法:
60用2除,余数分别是0,0,1,1,1,1 那么它的二进制是余数的倒序:111100
2.二进制转十进制 例:111100转十进制方法:
0*2^0+0*2^1+1*2^2+1*2^3+1*2^4+1*2^5=0+0+4+8+16+32=60
十六进制和八进制转换成十进制方法:
1.十六进制转十进制:
例如:法一:0x5A转十进制先将其转为二进制,5代表0101,A代表10即1010
则二进制为0101-1010,计算2+8+16+64=90
法二:5*16+10=90
2.十进制转十六进制:
例如:90用16除,余数是10,5,则其倒序为0x5A
3.八进制转十进制:
例如:法一:075先转成二进制7表示111,5表示101则为111-101
十进制为1+4+8+16+32=61
法二:7*8+5=61
4.十进制转八进制:61用8除余数为5,7则倒序为075
/*数据的内存大小*/
一个字节为8个二进制,例如int x=4,它在二进制的表现形式是0000-0000 0000-0000 0000-0000 0000-0100
int型的数据类型是4个字节即4个八位(8个二进制)
数据类型 大小(字节) 取值范围 默认值
byte 1 -2的7次方到2的7次方减1 0
short 2 -2的15次方到2的15次方减1 0
int 4 -2的31次方到2的31次方减1 0
long 8 -2的63次方到2的63次方减1 0
float 4 -2的128次方到2的128次方 0.0f
double 8 -2的1024次方到2的1024次方 0.0
char 2 0到2的16次方减1 '/u0000'(空格)
boolean 1 true或false false
注意:char类型是2个字节,所以char a='秋'是存在的,汉子是2个字节。
/*二进制的负数表现形式*/
例如6的二进制表现形式是110
其准确的表达方式是0000-0000 0000-0000 0000-0000 0000-0110
则根据规则"取反加1"为
1.取反 1111-1111 1111-1111 1111-1111 1111-1001
2.加1为 1111-1111 1111-1111 1111-1111 1111-1010
在代码中的快速将十进制转为二进制的代码为
System.out.println(Integer.toBinaryString(-6))
从中可以得知负数的最高位都是1.
/*变量*/
1.int虽然能代表大多数整数,但byte和short也有其存在的意义,能减少计算机缓存空间。
2.在定义float和double的数据变量时,float定义的变量尾巴必须加一个小写f
例如:float a=3.2f //f是不能缺少的
double b=3.2
/*类型转换*/
1.小转大无压力,大转小需要强转
byte a=1;
a=a+2;//是错误的表达式,因为右边a为byte类型,而2为int型,则左小右大,要想成立左边必须也是int类型。
2.作用一,将double转int类型,保留整数去掉小数。
强转 double a=3.1415
int k=(int)a;
/*算术运算符*/
%:表示的是余数,例如:10%3=1
(面试题)注意的点:当出现负数时,-5%2=-1 2%-5=2余数的符号只看左边,并且与左边一致。
++:自增符号,例如int a=3,b; b=a++;根据就近法则可知b=3,a因为自增变为4.
当 b=++a;则b=4,a还是自增变为4。
+:字符连接符,例如:System.out.println("5+5="+5+5),打印出来为5+5=55
/*转义字符*/
转义字符用 \来表示\后面的字符的含义
\n:表示换行,例如System.out.println("阿秋是\n天才");打印出来的为:阿秋是
天才
\b:表示退格,例如System.out.println("阿秋要\b去北京");打印出来的为:阿秋去北京
退格表示的是将输出语句退格符的前一个单位去掉再打印出来。
\r\n:按下回车键,也是换行的意思。
\t:制表符,相当于tab,例如:System.out.println("阿秋是\t天才")表示出来的是:阿秋是 天才
题目:"怎样表示带引号的helloworld"
通过转义字符改变引号的特性,使之能独立存在
System.out..println("\"helloworld\"")打印出来的为"hello world"
/*特殊运算符*/
(面试题)"s=s+5"与"s+=5"的区别,short s;
左边为2次运算,因为一个是2个字节,一个是4个字节,所以左边会编译失败,丢失精度
右边因为有"+="那么它自身会有一个默认转换过程,不会编译失败
/*逻辑运算符*/
&:与,两边必须都为true结果才为true
|:或,两边有一个true结果就能是true
^:异或,与|差不多,主要区别在于,当true^true时(左右两边相同时),结果为false
&&:双与,A&&B,当A为true时,再判断B,当A为false时,B不用计算,其结果肯定是false。
||:双或,A||B,当A为true时,B不用运算,其结果肯定是true。
/*位运算符*/
>>右移符号,例如6>>2,表示的是6除以2的2次方的取整为1
<<左移符号,例如6<<2,表示的事6乘以2的2次方
>>>无符号右移,它与右移符号>>最大的区别在于无符号右移在最高位用0补,而右移>>则是最高位是什么补什么。
/*负数的位运算*/
负数左右移并没有什么规律,主要是注意0xFFFFFFFFFF这种极端情况为-1。
/*&运算,|运算,^运算*/
1表示true.0表示false,先将要运算的数变为二进制,再进行运算。
其中有特点的是^(异或)运算,一个数异或同一个数两次的结果是原数,例如7^4^4=7;
/*在不用第三方变量的情况下调换2个数的位置*/
/*
class Q1
{
public static void main(String[] args)
{
int m=3.n=4;
n=n^m;
m=n^m;
n=n^m;
System.out.println("m="+m+",n="n);
}
}
*/
/*注意在ASCII表中,'A'的值为65*/
那么可以通过这做很多事情,比如打印字母C时的
System.out.println(char('A'+2));
/*程序流程控制*/
if语句
switch语句,注意要点:1.switch后面可以接数据或者字符,(byte,short,int,char)
class Q1
{
public static void main(String[] args)
{
int a=4,b=7;
switch(b-a)
{
case 1://case后面是空格加数值。
System.out.println("哈哈");
break;
case 2:
System.out.println("huohuo");
break;
case 4:
System.out.println("天才");
break;
default:
System.out.println("就是杆");
}
}
}
(面试题)
class Q1
{
public static void main(String[] args)
{
int a=4,b=7; //当我把两个break去掉后,他的运算顺序是先判断case,如果都没有的话则
//不再判断case,直接打印语句结果是d,A,X,E
switch(b-a)
{
default:
System.out.println("d"); //他会直到运行到break或大括号结束
case 1://case后面是空格加数值。
System.out.println("A");
//break;
case 2:
System.out.println("X");
//break;
case 4:
System.out.println("E");
break;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2