day01-基础
2018-01-05 17:21 墓中无人623 阅读(71) 评论(0) 收藏 举报整数 数据范围
byte 1个字节 (2bit) -128~127
short 2个字节 (4bit)
int 4个字节 (8bit)
long 8个字节 (16bit)
小数
float 4个字节
double 8个字节
字符
char 2个字节
布尔
boolean 1个字节
注意事项:
定义float类型,要加F或者f,建议加F
如:float f=3.14F;
定义long类型,要加L或者l,建议加f
如:long b=100000000L;
数据类型的大小顺序:
byte<short<int<long<float<double
//------------------------------------------------------------------------------
/*
酒与酒瓶,酒盖
两个酒瓶可以换一瓶酒,四个酒盖可以换一瓶酒
现在已经买了五瓶酒,
问最多可以喝多少瓶酒
如果可以找第三方借酒瓶和酒盖(需要归还)
例:最后还剩一个酒瓶,借来一个酒瓶兑换一瓶酒,再归还酒瓶
问最多可以喝多少瓶酒
*/
public static int all = 5;
public static int leftBottle;
public static int leftTop;
public static void main(String[] args)
{
all = all + drink(5,5);
System.out.println("总共能喝"+all);
System.out.println("剩下酒瓶个数"+leftBottle);
System.out.println("剩下盖子个数"+leftTop);
}
public static int drink(int bottle, int top)
{
if(bottle >=2 || top >=4)
{
leftBottle = (bottle/2)+(bottle%2)+(top/4);
leftTop = (top/4) + (top%4) + (bottle/2);
return (bottle/2) + (top/4) + drink(leftBottle,leftTop);
}
return 0;
}
//------------------------------------------------------------------------------
public static void main(String[] args)
{
int [] arr = {1,2,3};
for (int x=0;x<arr.length ;x++ )
{
System.out.print(arr[x]+","); // 一维数组遍历
}
}
//------------------------------------------------------------------------------
public static void main(String[] args)
{
int [][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr[x].length ;y++ )
{
System.out.print(arr[x][y]+","); //二维数组遍历
}
}
}
//------------------------------------------------------------------------------
public static void main(String[] args)
{
int [][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int sum = 0;
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr[x].length ;y++ )
{
sum = sum + arr[x][y];
}
}
System.out.print(sum);//二维数组求和。
}
//------------------------------------------------------------------------------
public static void trans(int num, int base , int offset)
{
char [] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
char [] arr = new char[32];
int pos = arr.length;
if (num == 0)
{
System.out.print(0);
return;
}
while (num != 0)
{
int temp = num & base ;
arr[--pos] = ch[temp];
num = num >>> offset;
}
for (int x=pos;x<arr.length ;x++ )
{
System.out.print(arr[x]+",");
}
}
public static void tobin(int a) // 十进制转二进制
{
trans( a,1,1);
}
public static void tooct(int a)//十进制转八进制
{
trans(a,7,3);
}
public static void tohex(int a)//十进制转十六进制
{
trans(a,15,4);
}
public static void main(String[] args)
{
tobin(6);
tooct(60);
tohex(60);
}
//-----------------------------------------------------------
public static void tohex(int num) // 十进制转十六进制
{
char [] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
char [] arr = new char [8];
int pos = arr.length;
while (num != 0)
{
int temp = num & 15;
arr[--pos] = ch[temp]; //--pos 自减一位 即 最后一位角标 == ch[temp]
num = num >>> 4;
}
System.out.println("pos="+pos);
for (int x = pos;x<arr.length ;x++ )
{
System.out.print(arr[x]+",");
}
}
public static void tobin(int num) //十进制转二进制。
{
char [] ch = {'0','1'};
char [] arr = new char [32];
int pos = arr.length;
while (num !=0)
{
int temp = num & 1;
arr[--pos] = ch[temp];
num = num >>> 1;
}
System.out.println("pos="+pos); // pos = 29 , 从第29位开始循环遍历 1 1 0
for (int x = pos; x<arr.length ;x++ )
{
System.out.print(arr[x]);
}
}
public static void main(String[] args)
{
tobin(6);
tohex(60);
}
//-------------------------------------------------------------------
public static void main(String[] args) //十进制转十六进制
{
tohex(60);
}
public static void tohex(int num)
{
char [] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
char [] arr = new char[8];
int pos = 0; //将 指针指向0角标位。
while (num != 0)
{
int temp = num & 15;
arr[pos++] = ch[temp]; // 指针递增,陆续存入1,2,3角标位
num = num >>> 4;
}
for (int x=arr.length-1;x>=0 ;x-- ) // 打印时从最后角标位开始打印。。
{
System.out.print(arr[x]+","); // 打印结果为 , , , , , ,3,c,
}
}
//-------------------------------------------------------------------
public static void main(String[] args) //十进制转十六进制
{
tohex(60);
}
public static void tohex(int num)
{
char [] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',}; //字母和数字,用char 类型
char [] arr = new char [8];
for (int x = 0;x<8 ;x++ )
{
int temp = num & 15;
//System.out.println(ch[temp]);
arr[x] = ch[temp];
num = num >>> 4;
}
for (int x=arr.length-1; x>=0 ;x-- )
{
System.out.print(arr[x]+","); // 打印结果为0,0,0,0,0,0,3,c,
}
}
//-------------------------------------------------------------------
public static void main(String[] args) //查找数组中的最大值。
{
int [] arr = {1,3,4,6,8,9};
int max = getmax(arr);
System.out.println("max="+max); //打印结果 max=9
}
public static int getmax(int [] arr) //返回具体数值,所以用int 类型。
{
int max = arr[0]; // 将arr[0]赋值给max
for (int x= 1; x<arr.length;x++) // max = arr[0], x从1开始遍历。
{
if (arr[x] > max)
{
max = arr[x];
}
}
return max;
}
//-------------------------------------------------------------------
public static void main(String[] args) //查找数组中的最大值。
{
int [] arr = {1,3,4,6,8,9};
int max = getmax(arr);
System.out.println("max="+max);// 打印结果 max=9
}
public static int getmax(int [] arr)
{
int max = 0;
for (int x=1; x<arr.length;x++)
{ if(arr[x]>arr[max])
{
max = x;
}
}
return arr[max];
}
//-------------------------------------------------------------------
public static void main(String[] args) //查找数组中的最小值。
{
int [] arr = {1,3,4,6,8,9};
int min = getmin(arr);
System.out.println("min="+min);// 打印结果 min=1
}
public static int getmin(int [] arr)
{
int min = 0;
for (int x=1; x<arr.length;x++)
{ if(arr[x]<arr[min])
{
min = x;
}
}
return arr[min];
}
//-------------------------------------------------------------------
public static void main(String[] args) //遍历排序
{
int [] arr = {6,5,4,1,2,3};
printarray(arr); //排序前打印
System.out.println();//换行
selectsort(arr); //排序 无打印
printarray(arr); //排序后打印
}
public static void selectsort(int [] arr)
{
for(int x = 0;x<arr.length-1;x++) // x<arr.length -1 倒数第二位角标时,y=x+1 ,倒数第二位角标与最后一位角标值比较。
{
for (int y = x+1;y<arr.length;y++) // x 与 x+1 即下一位进行比较,再与第二位,第三位...y++进行比较。
{
if (arr[x]>arr[y])
{
int temp = arr[x]; //将较大的值往后放。
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
public static void printarray(int [] arr) //打印数组元素
{
System.out.print("["); // 在数组前加上[
for(int x = 0; x<arr.length;x++)
{
if (x!= arr.length-1) // 如果不是最后一位角标
{
System.out.print(arr[x]+",");
}
else
System.out.print(arr[x]+"]"); //在最后位加上]
}
}
//-------------------------------------------------------------------
public static void main(String[] args) //冒泡排序
{
int [] arr = {6,5,4,1,2,3};
printarray(arr); //排序前打印
System.out.println();//换行
bubblesort(arr); //排序 无打印
printarray(arr); //排序后打印
}
public static void printarray(int [] arr) //打印数组元素
{
System.out.print("["); // 在数组前加上[
for(int x = 0; x<arr.length;x++)
{
if (x!= arr.length-1) // 如果不是最后一位角标
{
System.out.print(arr[x]+",");
}
else
System.out.print(arr[x]+"]"); //在最后位加上]
}
}
public static void bubblesort(int [] arr) //冒泡排序
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y = 0;y<arr.length-x-1 ;y++ )//-x 让每一次需要比较的元素减少。 -1 为了避免y+1时越界。
{
if (arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
//------------------------------------------------------------------
public static void main(String[] args) // 将赋值函数封装成另一个函数。
{
int [] arr = {5,1,6,4,2,8,9};
printarray(arr);
System.out.println("排序前遍历");
bubblesort(arr);
System.out.println("排序中");
printarray(arr);
System.out.println("排序后遍历");
}
public static void printarray(int [] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if (x!= arr.length-1)
{
System.out.print(arr[x]+",");
}
else
System.out.print(arr[x]+"]");
}
System.out.println();
}
public static void bubblesort(int [] arr) // 冒泡排序
{
for (int x = 0;x<arr.length-1 ; x++ )
{
for (int y=0;y<arr.length-x-1;y++ ) //-x :让每一次比较的元素减少,-1:为了避免角标越界。
{
if (arr[y]>arr[y+1]) //内循环,从0开始比较。 如果0角标大于1角标。
{
/*int temp = arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp; //将此处函数封装起来。
*/
swap(arr,y,y+1);
}
}
}
}
public static void swap(int [] arr, int a , int b)
{
int temp = arr[a];
arr[a]= arr[b];
arr[b]= temp;
}
//-------------------------------------------------------------------
public static void main(String[] args) //折半查找
{
int [] arr = {2,4,5,7,19,32,45};
int index = halfsearch(arr,8); //如果数组中有8,结果都一样。放在index=4,的位置
System.out.println("index="+index);
}
public static int halfsearch(int [] arr,int key)
{
int max,min,mid; //也可以写成 int min = 0,max = arr.length-1,mid;
max = arr.length-1; // 若按照以上写法,此句合并到上面注释中
min = 0; // 同上,此句可合并。
while (min<=max)
{
mid = (max + min)>>1; // 除于2 可以写成 >>1
if (key>arr[mid])
{
min = mid + 1;
}
else if (key<arr[mid])
{
max = mid -1;
}
else
return mid ;// 返回mid是什么意思?
}
return min; // 返回min就是8要插入的位置。
}
//-------------------------------------------------------------------
public static void main(String[] args) //折半查找
{
int [] arr = {2,4,5,7,19,32,45};
int index = halfsearch(arr,7);
System.out.println("index="+index);
}
public static int halfsearch(int [] arr, int key)
{
int max = arr.length-1, min = 0,mid;
while (min<=max) // 判断条件,只要min<=max时说明还能折半,所以继续执行循环。
{
mid = (max+min)>>1; //相当于除于2
if (key>arr[mid])
{
min = mid + 1;
}
else if (key < arr[mid])
{
max = mid - 1;
}
else
return mid;
}
return -1; //如果要查找的数值在数组中不存在,就用-1来提醒。
}
//或者其他写法,仅供参考。
/*
while (arr[mid]!=key) //如果中间值不等于key (要寻找的值)
{
mid = (max + min)/2;
if (key>arr[mid])
{
mid = mid + 1;
}
else if (key<arr[mid])
{
max = mid - 1;
}
if (min > max)
{
return -1;
}
mid = (max + min)/2;
}
return mid;
*/
//-------------------------------------------------------------------
public static void main(String[] args) //遍历查找
{
int [] arr = {2,4,5,7,19,32,45};
int index = getindex(arr,32);
System.out.println("index="+index);
}
public static int getindex(int [] arr, int key)
{
for (int x =0;x<arr.length ;x++ )//遍历查找
{
if (arr[x]==key)
{
return x; // 返回角标值
}
}
return -1;// -1 角标,表示没找到。
}
//--------------------------------------------------------------------
---*---
--***--
-*****-
*******
public static void main(String[] args) {
for(int x = 1; x <= 4; x++){
for (int y = x+1; y <= 4; y++){
System.out.print("-");
}
for(int z = 1; z <= 2*x-1; z++){
System.out.print("*");
}
System.out.println();
}
}
//--------------------------------------------------------------------
----*
---***
--*****
-*******
*********
-*******
--*****
---***
----*
public static void main(String[] args) {
for(int x = 1; x <= 5; x++){
for (int y = x+1; y <= 5; y++){
System.out.print("-");
}
for(int z = 1; z <= 2*x-1; z++){
System.out.print("*");
}
System.out.println();
}
for(int x = 1; x <=4; x++){
for(int y = 1; y <= x; y++){
System.out.print("-");
}
for(int z = 2*x-1; z <= 7;z++){
System.out.print("*");
}
System.out.println();
}
}
//--------------------------------------------------------------------
public static void print99(int num) //打印99乘法表
{
for (int x =1;x<=num ;x++ )
{
for (int y=1;y<=x ;y++ )
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
public static void print99()
{
print99(9); //直接引用楼上已成立的函数。
}
public static void main(String[] args)
{
print99(5); // 打印到5为止。
print99(); // 打印99乘法表
}
//--------------------------------------------------------------------循环打印
/* 打印以下图标
----*
---* *
--* * *
-* * * *
* * * * *
*/
public static void main(String[] args)
{
for (int x=0;x<5 ;x++ )
{
for (int y=x+1; y<5 ;y++ )
{
System.out.print("-");
}
for (int z=0;z<=x ;z++ )
{
System.out.print("* "); //* 加空格
}
System.out.println();
}
}
//------------------------------------------------------------------
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
public static void main(String[] args) {
for (int x = 0; x < 5; x++){
for (int y = x+1; y < 5; y++){
System.out.print(' ');
}
for (int z = 0; z <= x; z++){
System.out.print("* ");
}
System.out.println();
}
for(int x = 0; x < 4;x++){
for (int y = 0 ; y <= x; y++){
System.out.print(" ");
}
for (int z = x ; z < 4;z++){
System.out.print("* ");
}
System.out.println();
}
}
//------------------------------------------------------------------
public static void main(String[] args) //主函数入口
{
draw(8,8); // 打印结果为横竖八颗*
printhr(); //打印结果为------
draw(3,3); //打印结果为横竖三颗*
printhr(); //打印结果为------
print99(); //打印99乘法表
}
/*
1,确定结果:没有,直接打印。所以返回值类型是void
2,有未知内容吗?有。两个。 因为矩形的行和列不确定。
*/
public static void draw(int row , int col) //函数 入口
{
for (int x =0;x<row ;x++ )
{
for (int y=0;y<col ;y++ )
{
System.out.print("*");
}
System.out.println();
}
}
public static void printhr() //函数入口
{
System.out.println("-------------");
}
public static void print99() // 99乘法表函数入口。
{
for (int x =1;x<=9 ;x++ )
{
for (int y=1;y<=x ;y++ )
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
//------------------------------------------------------------------
public static void main(String[] args)
{ int a= 4, b = 3; // 打印结果为1
char ch = '-';
switch (ch)
{
case '+':
System.out.println(a+b);
break;
case '-':
System.out.println(a-b);
break;
case '*':
System.out.println(a*b);
break;
default:
System.out.println("feifazhi");
}
int x = 9 ; //打印结果为9fall
switch (x)
{
case 3:
case 4:
case 5:
System.out.println(x+"spring");
break;
case 6:
case 7:
case 8:
System.out.println(x+"summer");
break;
case 9:
case 10:
case 11:
System.out.println(x+"fall");
break;
case 12:
case 1:
case 2:
System.out.println(x+"winter");
break;
default:
System.out.println("feifazhi");
}
}
//------------------------------------------------------------------
public static void main(String[] args) //打印结果 d
{ int n = 1;
if (n>1)
System.out.println("a");
else if (n>2)
System.out.println("b");
else if (n>3)
System.out.println("c");
else
System.out.println("d");
}
//------------------------------------------------------------------
public static void main(String[] args) // 打印结果: d
{
int x = 3 ;
switch (x) // byte short int char
{
case 4:
System.out.println("a");
break;
case 6:
System.out.println("b");
break;
case 2:
System.out.println("c");
break;
default:
System.out.println("d");
break; //可以省略,后有花括号结束。
}
}
//------------------------------------------------------------------
public static void main(String[] args) // 打印结果 tuesday
{
// 需求1,根据用户定义的数值不同,打印对应的星期英文。
int num = 2;
if (num==1)
{System.out.println("monday");
}
else if (num==2)
{System.out.println("tuesday");
}
else
System.out.println("nono");
}
//------------------------------------------------------------------
public static void main(String[] args) //for 循环嵌套 打印结果为 5spring
{
int x=5;
if (x<1 || x>12) //将大于12 和 <1 的情况先排除
{
System.out.println("feifazhi");
}
else if (x>=3 && x<=5)
{
System.out.println(x+"spring");
}
else if (x>=6 && x<=8)
{
System.out.println(x+"summer");
}
else if (x>=9 && x<=1)
{
System.out.println(x+"fall");
}
else
System.out.println(x+"winter");
}
//------------------------------------------------------------------
/* 打印结果
x=2
x=4
x=6
x=8
*/
public static void main(String[] args)
{ for (int x =1;x<10 ;x++ )
{
if (x%2==1) // x=1 时,条件满足,继续执行循环,不打印x。当x=2 4 6 8 时,条件不满足,才执行打印。
continue;
System.out.println("x="+x); // 打印结果:x=2,x=4 x=6 x=8
}
}
//---------------------------------------------------------------
public static void main(String[] args) //for 循环嵌套
{
for (int x=1;x<=30 ;x++ )
{
if (x%7 !=0)
{
continue; //如果 !=0 继续循环,否则就打印x
}
System.out.println("x="+x); //打印结果 x=7 x=14 x=21 x=28
}
}
//---------------------------------------------------------------
public static void main(String[] args)
{ w:for (int x =0;x<3 ;x++ ) // | ????? 打印结果 x=0
{ // |
q:for (int y=0;y<4 ;y++ ) // |
{ // |
System.out.println("x="+x); // |
break w;//默认跳内循环。 // |
} // |
} // |
} // |
public static void main(String[] args) // | ????? 打印结果 x=0
{ // |
/* for (int x =0;x<3 ;x++ ) // |
{ // |
System.out.println("x="+x);
break; //跳出循环。
}
}
//--------------------------------------------------------------
public static void main(String[] args) //for 循环嵌套 for (初始化表达式;循环条件表达式;循环后操作表达式)
{
int x = 1;
for (System.out.println("a");x<3 ; System.out.println("c"),x++ ) // 将x++放在括号外也成立。
{
System.out.println("d"); // 打印结果为 a d c d c
//x++;
}
}
//--------------------------------------------------------------
public static void main(String[] args) //打印1~10的和。
{
/* 定义变量,用于存储不断变化的和。
int sum = 0;
// 定义变量,记录住不断变化的倍加的数。
int x = 1 ;
// 定义循环,重复加法的过程,
while (x<11) // 用while 语句也能打印
{
sum = sum + x ;
x++;
}
System.out.println("sum="+sum);
*/
int sum = 0;
for (int x = 1;x <= 10 ; x++ )
{
sum += x ; //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| sum += x;
}
System.out.println("for sum="+sum);// 打印结果 sum=55
}
//-----------------------------------------------------------------
public static void main(String[] args) // 求和 sum=6
{
int sum = getsum(4,7); //当括号内只有两位数时,return x+ y.
// int sum = getsum(1,2,3);// 当括号内有三位数,return x + y + z
System.out.println("sum="+sum);
}
public static int getsum(int x , int y,int z)
{
return x + y + z;
}
public static int getsum(int x , int y)
{
return x + y ;
}
/*
什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同。
那么,这时就定义一个函数名称以表示其功能,方便阅读
而通过参数列表的不同来区分多个不同名函数。
*/
//----------------------------------------------------------------
public static void main(String[] args) // 打印结果 true
{
boolean xxx = compare(3,3);
System.out.println(xxx);
}
public static boolean compare(int a,int b)
{
/* if (a==b)
{
return true;
}
else // 可以省略不写。
return false;
*/
return a==b;
}
//-------------------------------------------------------------------
public static void main(String[] args)
{
int d= getmax(1,2); //取 a b 中的最大值
System.out.println(d);
}
public static int getmax(int a, int b)
{
return (a>b)?a:b; //如果a>b,返回a,否则返回b。 //----------------------------------------------------------需注意
}
//-------------------------------------------------------------------
public static void main(String[] args)
{
int count = 0;
for (int x =1;x<=100; x++ )
{
if (x%7==0)
count++;
}
System.out.println("count="+count); //打印结果count=14
int shuliang = 0;
for (int x = 1;x<=100 ;x++ )
{
if (x%7==0)
{
shuliang++;
}
}
System.out.println("shuliang="+shuliang); //打印结果shuliang=14
}
/*
1~100之间 7的倍数的个数,并打印。
思路;
1, 先对 1~100 进行循环(遍历)
2,在循环的过程中,定义条件,只对7 的倍数进行操作。
3,定义循环语句,用for语句。
4,在循环中定义判断,只要是7的倍数即可。使用if语句。 条件:7的倍数 %7 == 0.
5. 因为7的倍数不确定,只要符合条件就通过一个变量来记录住这个变化的次数。
*/
//--------------------------------------------------------------------
public static void main(String[] args)
{
//System.out.println(1%2);
int a = 3, b;
b = a++;
System.out.println(a+"."+b); //打印结果 4.3
//System.out.println(b); // b=3;
//System.out.println(a); // a=4; a=a + 1
//System.out.println("5+5"+5+5); //5+555
System.out.println("hello\nworld");// \n 换行
/*
转义字符,通过\来转变后面的字母或者符号的含义 |
\n:换行 |
\b:退格,相当于backspace |
\r:按下回车键 |
\t:制表符,相当于tab键。 |
*/
System.out.println("hello java");
System.out.println("\"hello\"");// 带有双引号的hello 打印结果"hello"
}
//--------------------------------------------------------------------
public static void main(String[] args)
{
int x = 5555;
x = x /1000 * 1000;
System.out.println("x="+x); //打印结果为 x=5000 int类型 没有小数, x/1000 = 5
}
浙公网安备 33010602011771号