您的位置:首页 > 职场人生

AdaultBird--我的黑马程序员之路!Chapter13---java编程基础!

2015-09-12 15:03 666 查看
一、基础常识

1、软件开发

(1)什么是软件?

一系列按照特定顺序组织的计算机数据和指令的集合

常见的软件:

系统软件:如dos Windows linux

应用软件:扫雷、迅雷、QQ

(2)什么是开发? 制作软件

2、人机交互

软件的出现,实现了人与计算机更好的交互

交互方式:

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

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

3、Dos命令行

常见的命令:

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

md:创建目录

rd:删除目录

cd:进入指定目录

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

cd/退回到根目录

del:删除文件

exit:退出dos命令行

4、计算机语言

人与计算机进行交互的方式,如果要与计算机进行交流,必须使用计算机语言

常见的计算机语言有很多种C、C++、java等

5、java语言概述

(1)、概述

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

是一种面向Internet的编程语言

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

简单易学,完全面向对象,安全可靠,与平台无关的编程语言(跨平台)

(2)java语言的三种技术架构

J2EE企业版:为开发企业环境下的应用程序提供的一整套解决方案

J2SE标准版:是开发普通桌面和商务应用程序提供的解决方案

J2ME小型版:开发电子消费产品和嵌入式设备提供解决方案

(3)java语言的特性

跨平台性:通过java编辑的语言可以在不同平台的系统上都可以运行

原理:先在操作系统上安装一个java虚拟机JVM(java virtual machine),由JVM负责java程序在系统中的运行

(4)java语言环境搭建

JDK(java developer kit)java软件开发工具包,包含了JRE,安装了JDK就不需要再重新安装JRE

JRE(java runtime environment)java运行环境,包括了JVM和java所需的核心类库

下载并安装JDK

配置环境变量  我的电脑-->属性-->高级-->环境变量 -->path=bin文件所在的路径:就是告诉系统,去哪里寻找java的执行程序

set可用于临时配置环境变量的值 比如 set path=”新路径“;

验证是否成功

(5)编写一个简单的java程序 主函数是程序的入口,一个类不是必须要有主函数,但是有只有有主函数的类才可以独立运行,同时一个类只能有一个主函数。

(6)classPath配置 就是告诉计算机去哪里执行我的类文件(.class) 

我的电脑-->属性-->高级-->环境变量 -->classPath=自定义.class的路径

二、java语言基础组成(关键字;标识符;注释;常量和变量;运算符语句;函数;数组)

1、关键字:被java赋予了特殊含义的英文单词

特点:java中的所有关键字都是小写

用于定义数据类型的关键字:

class
interface byte
short int
long float
double char
boolean void 

用于定义数据类型值的关键字

true
false  null

用于定义流程控制的关键字

if 
else  switch 
 case default
while do 
for break
continue return

用于定义访问权限

private 
protected  public 

用于定义类、函数、变量修饰符的关键字

abstract 
final static 
synchronized

用以定义类与类之间关系

extends
implements

用于建立实例及引用实例,判断实例的关键字

new 
this  super
instanceof

用于异常处理的关键字

try
catch finally
throw  throws

用于包的关键字

import 
package

其他关键字

native 
strictfp transientvolafileassert

2、注释

(1)单行注释  // 后面可以添加单行注释

(2)多行注释   /*注释的内容* /    可以跨行,但是里面不可以添加多行注释

(3)文档注释 javadoc命令

/**

@author :name

版本:v1.0

单行注释

多行注释

*/

(3)、注释的作用

注解,提供给开发者,了解程序内容;调试程序;

3、标识符

在程序中自定义的一些名称

由26个英文字符大小写;数字;0-9符号;_$组成

定义合法标识符规则:

(1)数字不可以开头

(2)不可以使用关键字

java中严格区分大小写

注意:在起名时,为了提高阅读性,尽量起有意义的

java中的名称规范

(1)包名,多单词组成时,所有字母都小写

(2)类名,多单词组成时,每个单词手写字母大写

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

(4)常量名:所有字母都大写,单词之间用_连接

4、常量与变量

(1)常量:表示不能改变的数值

java 中常量的分类

1、整数常量 所有整数

2、小数常量 所有小数

3、布尔型常量 true和false

4、字符常量,将一个数字,字母,或者符号用(' ')标识

5、字符串常量 将一个或多个字符用(" ")标识

6、null 常量

(2)对于整数,java有四种表现形式

二进制:0 1

十进:0-9,满10进1

八进制:0-7,满8进1,用0表示开头 二进制3位代表1位

十六进制:0-9,A-F,满16进1,用0x开头二进制4位代表1位

(3)进制转换

十进制转二进制
除二取余反写

二进制转十进制
每位乘2 再相加

负数的二进制 =正数的二进制取反+1

变量

(1)概念:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类范围内不断变化

(2)为什么要定义变量:用来不断存储同一类型的常量,并且可以重复使用

(3)使用变量注意:变量的作用范围在{内起效};初始化值;

(4)定义变量的格式 数据类型 变量名=初始化值;

(5)java是强类型语言,对每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间

数据类型划分:

基本数据类型

数值型:整形(byte int short long )

字符型
char String

布尔型
boolean

引用数据类型
类      接口 
数组

(6)数据类型转换

自动类型转换(也叫隐式类型转换)低到高

强制类型转换(也叫显示类型转化)高到底

5、运算符

算数运算符+
- *
/ ++--
%

赋值运算符= += -=
/=*=
%=

比较运算符>
< >=
<= ==!=

逻辑运算符&逻辑与
逻辑或|&&逻辑与只判断一边不符合就跳出
||逻辑或 只判断一边不符合就跳出! 逻辑非

位运算符 >> 右移
(带符号) <<左移 
>>>无符号右移(空出来的左边补0)

&与运算
二进制相应位,同为1 则为1,否则为0 | 或运算 二进制相应位,同为0 则为0,否则为1

^亦或 二进制相应位 不同为1,相同为0,疑惑两次,数据不变 ,可用于数据加密
~反码

无符号交换两个数的值 

n=n+m;
n=n^m;

m=n-m;
m=n^m;

n=n-m;
n=n^m;

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

转义字符 用\来转变后面字母或符号的含义

6、流程控制

此处比较容易理解 且经常用到 ,容易记忆 不作过多笔记

(1)判断机构 if(){} else{} 

(2)循环机构 while(){} for(循环变量;循环条件;循环依据){}

(3)选择机构 switch ()case:

(4)嵌套循环  循环加判断 循环加循环 判断加判断

注:流程控制当中会用到一些关键字 break  跳出当前循环  
continue 急需下一轮循环 两者必须用于循环当中

for 与 while 的区别  变量的作用域不同 while的循环变量定义在循环外 

要实现break跳出外循环 可以给循环体 加标注 ,跳出时标注跳出哪个循环

7、函数

(1)函数的定义:定义在类当中,具有特定功能的一段小程序,也称之为方法

函数的格式:

修饰符 返回值类型
函数名(参数类型 形式参数1.。。。){ //函数被调用时,实际参数传递给形式参数

执行语句;

return 返回值;(用于结束函数,返回值返回给调用者)

}

(2)函数的特点

java中对功能的定义是通过函数的形式来体现的,定义函数可以将功能代码进行封装;

便于对该功能进行重复调用;

函数只有被调用才会被执行;

函数的出现提高了代码的复用性;

对于函数没有具体返回值的情况,返回值类型用void表示,那么该函数的return语句如果在最后一行 可以被省略

注意:函数中只能调用函数,不可以在函数内部定义函数

定义函数时,函数的结果应该返回给调用者,交由调用者处理

(3)函数的应用

如何定义一个函数?

A.明确返回值类型(结果)

B 确定参数列表(是否需要调用者传入参数)

C 定义实现过程

(4)函数的重载

在同一个类中,允许存在多个函数名称相同,但参数列表不同的函数。

特点:与返回值无关,只看参数列表

优点:方便阅读,优化了程序设计

8、数组

(1)数组概述

同一种类型数据的集合,其实数组就是一个容器

(2)数组的好处

可以自动给数组中的元素从0开始编号,方便操作

(3)内存结构

java程序运行时,需要在内存中分配空间。为了提高运行效率,有对空间进行了不同区域的划分,因为每一片区域都有的数据处理方式和内存管理方式。

栈内存:用于存储局部变量,当数据使用完,所占空间自动释放

堆内存:数组和对象,通过new建立的实例都放在堆内存中;每一个实体都有内存地址值;实体中的变量都有默认初始化值;实体不再被使用,会在不确定的时间被垃圾回收器回收。

方法区;本地方法区;寄存器;

(4)数组的定义格式

int[] arr=new int[2];    int[] arr=new int[]{3,2,5,6};

(5)数组的遍历

for循环和高级for循环;arr.length获取数组长度

(6)常见操作,获取最值

定义中间值可以是数组元素 ,也可以是角标

(7)数组排序

选择排序:内循环结束一轮,最值出线在头位置

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;

}

}

}

冒泡排序:相邻两个元素比较,内循环结束一次,极值出现在最右边

for(int x=0;x<arr.length-1;x++){

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;

}

}

}

(8)数组查找

普通查找比较简单,遍历数组即可。这里只讲折半查找

public static in halfSearch(int[] arr,int key){

int min=0,max=arr.length,mid=(min+max)/2;

while(arr[mid]!=key){

mid=(min+max)/2

if(arr[mid]>key)

max=mid-1;

if(arr[mid]<key)

min=mid+1;

if(min>max)

return -1;

mid=(min+max)/2;

}

return mid;

}

折半查找的另一种方式

public static int halfSearch(int[] arr,int key){

int min=0,max=arr.length,mid;

while(min<max){

mid=(min+max)/2;

if(arr[mid]>key)

max=mid-1;

if(arr[mid]<key)

min=mid+1;

else

return mid;

}

return -1;

}

折半查找的应用,将指定元
a2d5
素插入数组,并且不打乱数组的排序,第二种办法,返回min即可

(9)查表法十进制--->转十六进制

public static String toHexString(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;
arr[--pos]=chs[temp];
num=num>>>4;
}
return new String(arr,pos,(arr.length-pos));
}

进制优化

public static String toTranseString(int num,int base,int offerset){

if(num==0)

return num;
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>>>offerset;
}
return new String(arr,pos,(arr.length-pos));
}

(10)二维数组(数组中的数组)

int[][] arr=new int[x][y];

x-->二维数组的长度

y-->二维数组中的一维数组的长度

注意:数组是引用型数据类型,栈内存的数组对象指向堆内存中的地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: