差不多扔下java1年多了,现在回来看看才明白什么叫一日千里,我还是想把以前丢下的东西找回来,所以看看资料.把笔记放在这里
float fl=3.5; //错误 因为3.5是double的 应该是:float fl=3.5f;
byte b = 3;
b = b - 1;
以上写法错误 因为如果表达式中有int型数字,那么所有的byte ,shot,char的值都将被提升到int;同样,long,float, double也是如此
System.out.println('a'+1); 结果是98
System.out.println(""+'a'+1); 结果是a1
static void drawTech(int x,int y)
{.........}
这个方法可以直接使用而不需要new,比如在main方法中写drawTech(3,5);
System.out.println("2+5="+getAres(2,5));而不是
System.out.println("2+5=",getAres(2,5));
非法参数的检查用return;直接返回
函数的重载就是在一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或者类型不同即可
小数之间的除 结果会保留小数部分
整数之间的除 结果抛弃小数部分
-------------------------
int x=5,y;
int y=x/2;//结果是2
--------------------------
int x=5,y;
float f=x/2;//结果是2.0
----------------------------
int x=5,y;
float f=(float)x/2;//结果是2.5 这里发生了表达式数据类型提升
------------------------------------------------------------
int x=3510;x=x*1000/1000; 结果是3000
----------------------------------------
int x=5,y;
y = x%2;//结果是 1
--------------------------------
int x=5,y;
y = -x%2;//结果是 -1
-------------------------------
int x=5,y;
y = x%-2;//结果是 1 表示取摸时 摸数如果是负数 那么负号忽不计算
--------------------------------------
安排房间题目,共有x个学生,每个房间住6人,用一个公式计算他们要住的房间数?
解答:有些人是x/6+1; 显然在x为30的时候就不对了,正解是:(x+5)/6;
这种算法还可以用在查看留言版的分页显示上,x是总留言数,6是每页显示数,结果就是总共多少页面
-----------------------------------------------------------------------------------
假设要让x的值在0到9之间循环变化,写出代码:
int x=0;
while(true)
{
x=(x+1)%10;
}
这个可以用在循环10副图的显示上
-------------------------------------
x = 0x80000000;
y = x>>1;//有符号移位最高位补的是原来的最高位,原来是1就补1,是0补0
System.out.println(Integer.toHexString(y));//将int的y转化为16进制
y = x>>>1;//无符号移无论原来是1还是0都补0
System.out.println(Integer.toHexString(y));//将int的y转化为16进制
-----------------------------------------------------------------------
byte,short,char,int,long都可以移位运算
低于int的操作数先自动转int再移
int型移 最多移31位,因为int最大是32位的 系统将操作数对32取模,得到的结果才是真正的依的位数,a>>33 和a>>1结果是一样的
long型是对64取模
x>>1和x/2结果一样 x<<2和x*4结果一样
-----------------------------------------------------
从键盘读取输入字符的整数值System.in.read();
以下代码为不断读入键盘值,如果是q,那么退出,如果不是q,打印字符
try
{
x=System.in.read();
}
catch(Exception e){}
while(x!='q')
{
System.out.println((char)x);
try{
x=System.in.read();
}
catch(Exceotion e){}
}
---------------------------------
声明数组可以:一开始就对数组赋值的叫静态数组
int a[]={1,2,3};
也可以
int []a=new int[]{1,2,3}
如果没有赋值,比如
int []a=new int[];
打印出来默认的全为0
如果这么定义一个数组int [] y;然后就拿来使用那么是编译通不过的,因为没有初始化,一个数组没有初始化,也没有指向堆中的任何地方,所以也没有默认值
------------------------
int a[4];//声明数组时 不能指定长度,编译将出错。和c不一样
---------------------------------------------------------
int[] x=new int[100];
x= null;
x[1]=3;
这样的代码编译通过,运行出错:空指针错误。 因为x数组指向的是空,所以就没有所谓的第一个元素第二个元素 这点需要注意
同理,当我们调用一个返回的对象的功能时,如果不对这个对象进行检查,而这个对象是空,那么就可能是这种空指针异常
-----------------------------------------------------------------------------------------------------
遍历二维数组
int [][] xx = new int[2][3];
for(int i=0;i<xx.length;i++)
{
for(int j=0;j<xx[i].length;j++)
{
System.out.println(xx[i][j]);
}
}
-----------------------------------------
int []a=new int[]{9,4,3,8};
Arrays.sort(a);//从小到大排序
2下结束