黑马程序员_java基础知识

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

Java基础

软件:一系列按照特定顺序组织的计算机数据和指令的集合,软件的出现实现了人与计算机之间更好的交互。

交互方式

    图形化界面:这种操作方式简单直观,使用着易于接受,容易上手操作。

    命令行方式:需要一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记住一些指令

课程中常见的dos命令

    dir:列出当前目录下的文件及文件夹

    md:创建目录

    rd:删除目录

    cd:进入指定的目录

    cd..:退回到上级目录

    cd/:退回到根目录

    del:删除文件

    exit:退出dos命令行

Java语言概述

    是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。

    是一种面向Internet 的编程语言

    随着java技术在web方面的不断成熟,已经成为web程序的首选开发语言

    简单易学,完全面向对象,安全可靠


JRE(Java Runtime Environment  Java运行环境)

    包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中

    只需要安装JRE即可。

JDK(Java Development Kit    Java开发工具包)

    JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。

什么时候需要配置path,什么时候需要配置classpath

    我们想要执行javac命令,必须切换到这个命令所在的目录下才能执行,这样执行比较有局限性,为了方便于执行所有java提供

    的工具,可以把这个工具所在的路径告诉系统,由windows帮我们去找要执行的命令,这样操作会更简单,所以需要配置path。


    class文件是java的运行文件,想要在任意目录下都可以执行某一目录下的class文件,根据path环境变量的原理,可以定义一

    个名为classpath的环境变量,将要运行的class文件目录定义在该变量中。


    classpath变量的值是java类文件的目录

    path变量的值是windows程序文件的目录

Java中的名称规范

    包名:多个单词组成时所有字母都小写

    类名或接口名:多单词组成时,所有单词首字母都大写

    变量名和函数名:多单词组成是,第一个单词首字母小写,第二个单词开始每个单词首字母大写

    所有字母都大写,多单词是每个单词间用下划线连接

Java语法演示

 class demo2
{
	public static void main(String[] args)
	{
		char ch='a';
		System.out.println('9'+2);
		int a=3,b;
		b=a++;
		System.out.println("a="+a+','+ "b="+b);
/*
	转义字符;通过\来转变后边字母或符号的含义;
	\n	换行
	\b	退格  相当于backspace
	\r	按下回车键  windows系统下,回车符是由两个字符\r\n组成
	\t	制表符  相当于Tab键
*/
		System.out.println("hello \t java");
		System.out.println("\\hello java\\");
/*
	逻辑运算符用于连接boolean类型的表达式
*/
		/*
		^ : 异或
		true^true=false;
		true^false=true;
		false^true=true;
		false^false=false;
		*/
		/*
		>> :最高位补什么由原有数据的最高位决定
		      如果最高位是0,右移后用0补空位
		      如果最高位是1,右移后用1补空位
		>>>  无论最高位是什么,右移后都用0补
		*/
		System.out.println(6 & 3);
		System.out.println(6 | 5);
		System.out.println(6 ^ 5);
		//System.out.println(Integer.toBinaryString(60));
		int num=60;
		//获取60的最低4位,通过&15
		int n1= num &15 ;
		System.out.println(n1>9 ? (char)(n1-10+'A') :n1);
		//获取下一组四位,将60右移4位
		int temp = 60 >> 4;
		//对temp的值进行最低4位的获取
		int n2= temp & 15;
		System.out.println(n2 > 9 ? (char)(n2-10+'A') : n2);
		int x = 3, y;
		y = (x>1) ? 100 : 200;
		System.out.println("y="+y);
		 x=3;
		if(x>1) 
			System.out.println('a');
		if ( x>2)
			System.out.println('b');
		 if (x>3)
			System.out.println('c');
		else 
			System.out.println('d');
		x=15;
		if ( x==3 || x==4 || x==5)
			System.out.println(x+"春季");
		else if ( x== 6 || x==7 || x==8 )
			System.out.println(x+"夏季");
		else if ( x==9 || x==10 || x==11 )
			System.out.println(x+"秋季");
		else if ( x==12 || x==1 || x==2 )
			System.out.println(x+"冬季");
		else 
			System.out.println("输入有误");
		x=4;
		switch ( x )
		{
		case 3:
		case 4:
		case 5:
			System.out.println("春季");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("夏季");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("秋季");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("冬季");
			break;
		default :
			System.out.println("错误");	

		}

	/*
	if 和switch语句很像
	具体什么场景下,用什么语句呢
	如果判断的具体数值不多,并且符合 byte short int char 四种类型
	虽然两个语句都可以使用,建议用switch语句,以为效率稍高

	其他情况 :对区间判断,对结果为boolean型判断,使用if ,if的使用范围更广
	*/
		

		

	}
}


 

class demo3
{	

	public static void main(String[] args)
	{
		/*
		定义初始化表达式
		while(条件表达式)
		{
		循环体(执行语句)
		}
		*/

		int x=1;
		while( x <= 10 )
		{
			System.out.println("x="+x);
			x+=2;
		}
		do
		{
			System.out.println("do :x="+x);
			x++;

		}while(x<=10);
		System.out.println("x==="+x);
		/*
		1)变量有自己的作用域,对于for来讲,如果将用于控制循环的变量定义在for语句中,那么变量只在for语句中有效,
		for语句执行完毕,变量在内存中释放
		
		2)for语句和while语句可以互换,如果需要定义循环增量,用for更合适
		      变量只为控制循环的增量而存在,用for语句,内存会稍微优化
		*/
		
		/*
		for(  int y=3; y<10; y++)
		{
		System.out.println("y="+y);
		}
		System.out.println("y==="+y);
		*/
		x=1;
		for(System.out.println("a"); x<3; System.out.println("c"))
		{
		System.out.println("d");
		x++;
		}
		/*
		无线循环的最简单变现形式
		for( ; ;) {}
		while( true ) {}
		*/	
		
	}
}


 

/*
1 获取1~10的和,并打印
*/

/*
1~100之间,7的倍数的个数,并打印
思路:
1,先对1~100进行遍历,通过循环的形式。
2,在遍历的过程中,定义条件,只对7的倍数进行操作。
3,因为7的倍数不确定,只要符合条件,就通过一个变量记录变化的次数。

步骤:
1,定义循环语句,选择for语句。
2,在循环中定义判断,只要是7的倍数即可,使用if语句,x%7==0。
3,定义变量,该变量随着7的倍数出现而自增。
*/

class Test
{
	public static void main(String[] args)
	{
	int sum=0;
	for ( int x=1 ; x<=10 ; x++ ) 
	{
	sum+=x;
	System.out.println("sum="+sum);
	}
	System.out.println( "sum="+sum );

	int count=0;
	for( int x=1; x<=100 ; x++)
	{
		if(x%7==0)
		{
		System.out.println("x="+x);
		count++;
		}
	}
	System.out.println("count="+count);

	/*
	累加思想:通过变量记录循环操作后的结果,通过循环的形式,进行累加的动作。
	*/

	/*
	计数器思想:通过一个变量记录数据的状态变化,也许通过循环完成
	*/

	
	


	}

}


 

class forfordemo
{
	public static void main(String[] args)
	{
		for( int x=0; x<3; x++)
		{		
			for( int y=0; y<4; y++)
			{
				System.out.print("*");
			}
			System.out.println();	//只有一个功能,换行		
		}
	/*
	**********
	*********
	********
	*******
	******
	*****
	****
	***
	**
	*
	发现图形有很多行,每一行有很多列
	使用嵌套循环
	*/
	// int z=10;
	w: for( int x=0; x<10; x++)
	{
		q: for( int y=x; y<10; y++)
		{
			System.out.print("*");	
		}
		System.out.println();
		// z--;
	}
	 for( int x=0; x<10; x++)
	{
		 for( int y=0; y<=x; y++)
		{
			System.out.print("*");
		}
		System.out.println();
	}
/*
九九乘法表

*/
	for( int x=1; x<9; x++)
	{
		for( int y=1; y<=x; y++ )
		{
			System.out.print(y);
		}
		System.out.println();
	}

	for( int x=1; x<10; x++)
	{
		for(int y=1; y<=x; y++)
		{
		System.out.print(y+"*"+x+"="+y*x+"\t");
		}
		System.out.println();
	}

	//continue 只能作用于循环结构。继续循环		特点:结束本次循环,进行下次循环
	w : for( int x=1; x<10; x++)
	{
		if(x%2==1)
		continue;
		System.out.print("x="+x+'\t');
		// continue w;
	
	}
	
	/*
	记住:
	1,continue 和 break的作用范围
	2,break和continue单独存在时,下面可以有任何语句,下边都执行不到	
	*/
	System.out.println();
	for( int x=0; x<10; x++)
	{
		for( int y=x+1; y<10; y++)
		{
			System.out.print(" ");
		}
		for( int z=0; z<=x; z++)
		{
			System.out.print("* ");
		}
		System.out.println();
	}


	}
}


 

class Fuction
{
	public static void main(String[] args)
	{
		getValue(4);
		compare( 4, 4 );
		add(4,5);
		add(4,5,6);	
		print99(6);
	}
	public static void getValue( int x)
		{
			System.out.println(x*3+5);
			return;
		}
	// 函数内部只能调用函数,不能定义函数
	/*
	如何定义函数?
	1,既然函数是一个独立的功能,那么该函数的运算结果是什么先明确
	2,再明确定义该功能的过程中,是否需要未知的内容参与运算
	*/
	// 需求:定义一个功能,完成3+4的运算,并将结果返回给调用者
	/*
	1,明确功能的结果:是一个整数的和
	2,在实现的过程中,没有未知的内容参与运算
	其实这两个功能就是在明确函数的定义
	1,是明确函数的返回值类型
	2,是明确函数的参数列表(参数类型和参数个数)
	*/
	public static boolean compare( int a , int b )
	{
		return (a==b) ? true : false;
	}
	// 当定义的功能不同,但参与运算的未知内容不同
	// 这时定义一个函数名称以表示功能,方便阅读,而通过参数列表的不同来区分多个同名函数	
	public static int add( int a,int b)
	{
		return a+b;
	}
	public static int add( int a, int b, int z)
	{
		return a+b+z;
	}
	public static void print99( int num)
	{
		for( int x=1; x<num; x++)
		{
			for( int y=1; y<=x; y++)
			{
				System.out.print(x+"*"+y+"="+x*y+"\t");

			}
			System.out.println();
		}
	}
	// 栈数据使用完毕,会自动释放
	// 
}


 

class ArrayDemo
{
	public static void main(String[] args)
	{
	// int [] arr = new int [3];
	// System.out.println(arr[2]);
	int [] arr =  {3,4,5,6,7,8};
	System.out.println("length="+arr.length);
	// 遍历数组中的每个元素,并求和
	int sum=0;
	for( int x=0; x<arr.length; x++)
	{
		System.out.println("arr["+x+"]"+"="+arr[x]);
		sum += arr[x];
	}
	
	System.out.println("sum="+sum);

	printArray(arr);

	int Max=getMax(arr);
	System.out.println("Max="+Max);

	int Min=getMin(arr);
	System.out.println("Min="+Min);

	System.out.println(arr);

	//布尔型数组的默认值是false
	boolean [] ar= new boolean [3];
	System.out.println(ar[1]);
	}
	// 遍历数组中的元素,并打印
	public static void printArray(int [] arr)
	{
		for(int x=0; x<arr.length; x++)
			{
			if (x!=arr.length-1)
				System.out.print(arr[x]+",");
			else
				System.out.println(arr[x]);
			}
	}
	// 取得最大值
	public static int getMax( int [] arr)
	{
		int max=arr[0];
		for( int x=1; x<arr.length; x++)
		{
			if ( arr[x]>max)
				max=arr[x];
		}
		return max;
	}
	//    获取最大值得另一种方法
	//    可以将变量初始化为0,这种方式其实是初始化数组中任一个角标
	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];
	}
	/*
	获取double类型数组的最大值,因为功能一致,所以定义相同的函数名称,以重载的形式存在
	public static double getMax( double [] arr )
	{
	
	}
	*/
	
	




}


 

/*
对给定数组排序
{2,4,8,5,3,7,6}
*/
class ArrayTest1
{
	// 选择排序
	public static void selectsort(int  [] arr)
	{
		for( int x=0; x<arr.length-1; x++)
		{
			for ( int y=x+1; y<arr.length;  y++)
			{
				if ( arr[x]>arr[y])
				{
					/*
					int temp=arr[x];
					arr[x]=arr[y];
					arr[y]=temp;
					*/
					swap(arr,x,y);
				} 
			}
		}
	}
	// 冒泡排序
	public static void bubblesort(int [] arr)
	{
		for( int x=0; x<arr.length; x++)  //  for(int x=arr.length-1; x>0; x--)
		{			// for( int y=0; y<x; y++)
			for( int y=0; y<arr.length-1-x; y++) //-x: 让每一次比较的元素减少;-1:避免下表越界
			{
				if(arr[y]>arr[y+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 printArray( int [] arr)
	{
		for(int x=0; x<arr.length; x++)
		{
			if ( x!=arr.length-1)
				System.out.print(arr[x]+",");
			else 
				System.out.println(arr[x]);
		}
	}
	public static void main(String[] args)
	{
		int [] arr = {2,4,8,5,3,7,6};
		// 排序前		
		printArray(arr);
		System.out.println();
		//排序
		//selectsort(arr);
		bubblesort(arr);
		// 排序后
		printArray(arr);
		
	}
}


 

/*
数组的查找操作
*/

class ArrayTest2
{
	public static void main(String[] args)
	{
		int [] arr= {2,4,5,7,19,32,49};
		//int index=getIndex(arr,4);
		int index=halfsearch(arr,3333);
		System.out.println("index="+index);
	}
	// 折半查找可以提高查找效率,但必须要保证该数组是有序的数组
	public static int halfsearch( int  [] arr, int key)
	{
		int min, max, mid;
		min=0;
		max=arr.length-1;
		mid=(min+max)/2;
		while(arr[mid]!=key)
		{
			if(arr[mid]>key)
				max=mid-1;
			else if(arr[mid]<key)
				min=mid+1;
			if(min>max)
			return -1;
			mid=(min+max)/2;
		}
		return mid;
	}
	//折半的第二种方式
	public static int halfsearch_2(int [] arr, int key)
	{
		while(min<=max)
		{
			min=(min+max)>>1;
			if(key>arr[mid])
				min=mid+1;
			else if(key<arr[mid])
				max=mid-1;
			else 
				return mid;
		}
		return -1;
	}







	// 定义功能,获取key第一次出现在数组中的位置。如果返回-1,表示该key在数组中不存在。
	public static int getIndex(int [] arr, int key)
	{
		for(int x=0; x<arr.length; x++)
		{
			if(arr[x]==key)
				return x;
		}
		return -1;
	} 
}


 

class ArrayTest3
{
	public static void main(String[] args)
	{
		toBin(6);
		System.out.println();
		toHex(60);
		toHex_1(-60);
		toBin_1(60);
		toHex_2(60);
		toOx(60);
	}
	/*
	十进制-->二进制
	*/
	public static void toBin( int num)
	{	
		StringBuffer sb= new StringBuffer();
		while(num>0)
		{
			//System.out.print( num%2);
			sb.append(num%2);
			num=num/2;
		}
		System.out.print(sb.reverse());
	}
	/*
	十进制-->十六进制                            0000-0000 0000-0000 0000-0000 0011-1100
                                           
	*/
	public static void toHex( int num)
	{
		StringBuffer sb= new StringBuffer();
		for(int x=0; x<8; x++)
		{
			int temp= num&15;
			if(temp>9)
				//System.out.print((char)(temp-10+'A'));
				sb.append((char)(temp-10+'A'));
			else 
				//System.out.println(temp);
				sb.append(temp);
			num=num>>>4;
		}
		System.out.println(sb.reverse());
	}
	/*
	0  1  2  3  4  5  6  7  8  9  A    B   C    D   E    F                 十六进制中的元素
	0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  
	查表法:  将所有的元素临时存储起来,建立对应关系
		每一次&15的值作为索引去查建立好的表,就可以找到对应的元素

	*/
	public static void toHex_1(int num)
	{
		char [] chs= {'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;
			//System.out.print(chs[temp]);
			arr[--pos]= chs[temp];
			num=num>>>4;
		}
		for(int x=pos; x<arr.length; x++)
		{
			System.out.print(arr[x]);
		}
		System.out.println();
	}
	public static void trans( int num, int base, int offset)
	{	
		if(num==0)
		{
			System.out.println(0);
			return;
		}
		char [] chs= {'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;
		while(num!=0)
		{
			int temp=num&base;
			arr[--pos]=chs[temp];
			num=num>>>offset;
		}
		for(int x=pos; x<arr.length; x++)
		{
			System.out.print(arr[x]);
		}
		System.out.println();
	}
	public static void toHex_2(int num)
	{
		trans(num,15,4);
	}
	public static void toBin_1(int num)
	{
		trans(num,1,1);
	}
	public static void toOx(int num)
	{
		trans(num,7,3);
	}
	
}



 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值