黑马程序员_java基础


------- android培训java培训、期待与您交流! ---------- 

  课程中常用的dos命令

  1. dir : 列出当前目录下的文件及文件夹.(了解就可以,不做重点掌握.)

  2. md : 创建目录

  3. rd : 删除目录

  4. cd : 进入指定目录

  5. cd.. :退回到上一级目录

  6. cd/ : 退回到根目录

  7. del : 删除文件(dos里面删除的文件不走回收站)

  8. exit : 退出dos命令行

 第一个Java程序

需求:写一个小程序:输出:hello world

步骤:1 . 用关键字class定义一个类,把要要输出的语句写在类中

         2 . 为了保证程序的独立运行,在类中定义一个主函数:public static void main(String[] args)

         3 . 将类所在的文件保存成扩展名为java的文件

         4 . 在dos控制台通过javac对java文件进行编译

         5 . 再通过java对编译后的class文件进行编译

 class Demo//定义一个类
{
  //主函数
  public static void main(String[] args)
  {
           //输出语句
  System.out.println("hello java");
  }
}

  java语言的基础组成: 关键字、标识符、注释、变量和常量、运算符、语句、函数和数组。

一 标识符

  java中的标识符是由26个英文字母的大小写,数字,_和$组成。(注意:_和数字不能开头)

(1)包名:由多个单词组成时全都用小写(xxxyyyzzz)。

(2)类名和接口名:由多单词组成时首字母大写(XxxYyyZzz)。

(3)变量名和函数名:由多单词组成时,第一个单词小写,第二个单词开始首字母都大写(xxxYyyZzz).

(4)常量名:所有字母都大写且单词之间 用下划线隔开(XXX_YYY_ZZZ)

二 变量和常量

1、常量

常量是由整数常量、小数常量、布尔型常量、字符型常量(用单引号)、字符串(双引号)和null常量组成。

注意:负数的二进制表现是其正数的二进制取反再加一。

例:6的二进制是110,因为6是int,所以

6对应的二进制是0000-0000 0000-0000 0000-0000 0000-0110

-6对应的二进制是1111-1111 1111-1111 1111-1111 1111-1010

2、变量

定义:将不确定的数据进行存储,需要在内存中开辟一个空间,空间里的数据类型必须相同。

格式:数据类型 变量名称=初始化值

注意:整数默认的类型是int,小数默认的类型是double,若果数据是float其后必须加f(float f=1.2f)。

3、数据类型转化

byte b=3;

b=b+2;

运行时,编译会出错;原因是:b为byte类型,2是int类型,进行计算时,计算机底层会进行自动转化(小变大),所以(b+2)的结果是int类型,为了让编译通过可以给结果进行强制转化(大变小)其形式是:(byte)(b+2)。

三 运算符

java中的运算符包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符

1、赋值运算符

注意:s=s+5和s+=5区别

第一个是两个运算(先进行算数运算再赋值运算),第二个只有赋值运算。

2'、逻辑运算

&和&&,|和|| 区别

&&:左边为False,则右侧不必再运算。&:左右都必须运算。

||:左边为true,则右侧不必再运算。|:左右都必须运算。

3、位运算

<<:左移; >>右移; >>>无符号右移.

小方法:(1)转移字符:\n:换行     \b:推格      \r:相当于回车    \t:制表符

(2)两数互换:运用第三方变量。

例:int a=3,b=4,temp;

temp=a;

a=b;

b=temp;

四 程序流程控制

1、if语句和三元运算符的互换

if语句:if(条件表达式)

           {表达式}

           else{表达式}

三元运算符:变量=(条件表达式)?表达式1;表达式2;

三元运算符的好处:可以简化if语句的代码;

缺点:因为是一个运算符,所以必须有结果。

2、if语句和switch区别

若判断的具体数值不多,且符合byte、int、char、short这四种类型,虽然两个语句都可以使用,但是switch更高效些。

若是对区间判断或结果为boolean类型时使用if。

3、while和do while的区别

(1)while语句是先进行判断再执行语句;do while则是先执行语句,再进行判断。

(2)do while至少进行一次语句的执行。

4、for和while的区别

(1)for的变量只在for的作用范围内,出了for的作用范围就会自动消除。

(2)while的变量则是作用于整个函数。

(3)若是变量只为循环次数而存在就选用for。

小方法:(1)无限循环的简单表达式:for(;;);while()(默认为true)

(2)for嵌套时:尖朝下,改变循环条件;尖朝上,改变初始化值。

五 函数

定义:函数就是定义在类中具有特定功能的一段小程序(也叫方法)。

格式:修饰符 返回值类型 函数名(参数类型1 形参1;参数类型2 形参2)

          {

               执行语句;

               return  返回值;

          }

特点:(1)定义函数可以将功能代码进行封装,便于提高功能的复用性。

(2)函数被调用时才会执行。

注意:(1)函数值能调用函数,不能在函数中再定义函数。

(2)定义函数时,函数的结果应返回给调用者。

函数的重载:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数和参数类型不同即可。

六 数组

1、定义:同一种类型数据的集合,其实就是一个容器。(好处:可以给数进行编号)

     格式:数据类型[] 数组名=new 数组名{元素的个数}

2、内存结构

java在运行时,需要在内存中分配空间,为了提高运算的效率,就对内存空间进行了划:栈内存、堆内存、方法区、本地方法区、寄存器。

(1)栈内存:用于存储局部变量,当数据使用完,所占空间就会自动释放。(比如:数组名)

(2)堆内存:数组和类,通过new建立的实例都放在堆内存中;每一个实体都有一个地址值;实体不在被引用时,会不定时的被垃圾回收器回收。

3、数组中设计到的一些函数

(1)数组的遍历

	/*打印数组*/
	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.println(arr[x]+"}");

		}
	}


 (2)选择排序

	/*
	  选择排序:第一个数一次和后面的每一个数比大小,小的换到第一位;
	  然后第二个数开始后后面的一次比.
	 */
	public static void selectSort(int[] arr)
	{
		//循环次数,"-1"是因为最后一个数字不用比了
		for(int x=0;x<arr.length-1;x++)
		{
			//比较次数,"+1"是避免同一个数相比较
			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;
				}
			}
		}
		
	}

(3)冒泡排序

	/*
	 冒泡排序:相邻两数相比较,将大的数(或小的数)一次放到后面
	 */
	public static void bubbleSort(int[] arr)
	{
		//循环的次数,"-1"是因为一个数字不能比较
		for(int x=0;x<arr.length-1;x++)
		{
			//比较的次数,"-x"是循环一次数组就会少比较一个数,"-1"防止数组角标越界
			for(int y=0;y<arr.length-x-1;y++)
			{
				if(arr[y]<arr[y+1])
				{
					int temp=arr[y];
					arr[y]=arr[y+1];
					arr[y+1]=temp;
				}
			}
		}
	}

(4)折半查找

	/*折半查找:必须建立在有序数组的基础上
	 */
	public static int halfSearch(int[] arr,int key)
	{
		int min=0,max=arr.length-1,mid=(min+max)/2;
		//循环的条件:key值是否等于数组的中间值
		while(arr[mid]!=key)
		{
			//若中间值小于key值,说明key处在中间值和最大值之间
			if(key>arr[mid])
				//此时就应该把中间值的下一位赋给最小值,继续折半
				min=mid+1;
			//若中间值大于key值,说明key处在中间值和最小值之间
			else if(key<arr[mid])
				//此时就应该把中间值的上一位一位赋给最大值,继续折半
				max=mid-1;
			//如果key不存在,则返回"-1"
			if(min>max)
				return -1;
			//循环一次,折半一次
			mid=(min+max)/2;
		}
		return mid;
	}


------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值