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

黑马程序员--Java基础

2015-08-27 22:48 477 查看
——- android培训java培训、期待与您交流! ———-

Java

概述

Java是Sun(Stanford University Network)公司开发出来的一套编程语言,主设计者是詹姆斯·高斯林James Gosling,最大的特点就是跨平台运行。

分类

J2SE(Java 2 Platform Standard Edition)标准版

J2ME(Java 2 Platform Micro Edition)小型版

J2EE(Java 2 Platform Enterprise Edition)企业版

Java的开发环境主要使用JDK(Java Development ToolKit-Java开发程序包),JDK是Java的核心,包含JRE(Java Runtime Envirnment-Java运行环境),而JVM(Java Virtual Mechinal-Java虚拟机)又是JRE中的一部分,实现可移植性靠的是JVM。

三者间的关系

JDK:JRE+工具

JRE:JVM+类库

JDK的下载和安装

下载网址:www.oracle.com

安装方式:傻瓜式安装,下一步即可。

配置环境变量

作用

通过配置path环境变量,将javac指令所在目录也就是JDK安装目录下的bin目录配置到path变量下,即可使javac指令在任意目录下运行

步骤

1.进入“我的电脑”中“属性”里面的“高级系统设置”选择“环境变量”,在系统变量中新建变量名称为JAVA_HOME,变量值为jdk的安装目录。

2.配置path,一定要保留原先的path变量,在原先的基础上用”;”分隔开来,在最前面添加%JAVA_HOME%\bin,代表bin目录的路径。

3.保存好以后运行命令提示符,输入命令“javac”出现帮助说明就证明配置正确。

classpath默认当前运行路径,在系统变量中配置classpath,配置的路径为*.class放置的文件夹的路径,配置完成以后,无论java命令在任何位置执行,都会从classpath路径中查找文件。

临时设置classpath路径方法:set classpath=“路径”,只作用于当前运行的这个命令提示符窗口,窗口关掉以后失效。

Java的基础知识

Java语言基础组成

1.关键字

被java赋予了特殊含义的单词

2.标识符

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

由26个大小写,数字 _ $组成

数字不能开头 关键字不能开头 严格区分大小写

规范:

包名:所有字母都小写 xxxyyyzzz

类名接口名:所有首字母大写 XxxYyyZzz

常量名:所有字母大写,多个单词的话用下划线连接 XXX_YYY_ZZZ

变量名和函数名: 第一个单词全小写,后面的所有单词首字母大写 xxxYyyZzz

3.注释

顾名思义,就是对Java语句做说明的语句

// 单行注释

/* */ 多行注释

/* / 文档注释

4.常量

表示程序运行时,数值不能改变的量

字面值常量:整数、小数、字符、字符串、布尔、null

自定义常量:类、接口、数组

5.变量

变量是内存中的一个存储空间,在程序运行过程中,其值在指定范围内可以改变的量。

变量的定义格式:

数据类型 变量名 = 初始化值;

例如:int i = 123;

6.进制

表现形式

二进制

由0和1组成,8个单位是1个字节 1个字节最大值是255,计算机采用此进制

八进制

0-7,满8进1,用0开头

十进制

0-9,满10进1

十六进制

0-9,A-F,满16进1,用0x开头

负数的二进制表现形式

-6:6的二进制取反+1 取反:将二进制的1变成0.0变成1

进制间的转换

十转二:对十进制数进行除2运算。没有余数为0 有余数为1。计算结果从右往左写。

例如,6的二进制表现形式为110。6除以2等于3,无余数得0。3除以2等于1,余数为1 得1。从右往左写就是110

二转十:二进制乘以2的过程。 从右往左运算

例如,110 0*2的0次方+1*2的1次方+1*2的2次方=0+2+4=6

其他进制转16进制:先转化为2进制,再转化为16进制

其他进制转8进制。三位代表一位进行转换

基本数据类型

byte:字节 8个二进制位 -128~127(-2的7次方~2的7次方减1)

short:短整型 16个二进制位 -21768~32767(-2的15次方~2的15次方减1)

int:整型 32个二进制位

long:长整型 64个二进制位

float:单精度 32个二进制位

double:双精度 64个二进制位

char:字符变量 16个二进制位

整数默认int

浮点默认double

长整数要加L或者l,单精度的浮点数要加F或者f。

数据间的转换

自动类型转换

byte b = 3

b= b + 2 不能运行

b占1个字节,2默认int类型占4个字节,不同的数据类型之间不能直接做运算,需要提升b的数值类型(小的向大的提升),运算结果也是4个字节,不能直接赋给b。3本身是整数,但在b的范围内,是个常量,所以可以赋给b。

强制类型转换

b = (byte)(b + 2);

byte强制转换的是小括号里的内容,不加小括号的话,byte只会转换b,不会转换2,所以还是会报错。

运算符

算术运算符

+, - , *, /

加减乘除就不用说了,大家都懂的~

说点特别的

%(取模即取余数 左边小于右边结果是左边。左边等于右边结果是0。右边是1结果是0。如果出现负数,结果只看被模数即左边)

++:a++ 表示给a进行+1运算,并将运算后的值重新赋给a,不等于a=a+1,因为a+1只进行+1运算,并没有把运算后的值重新赋给a。 b=a++:先将a的值赋给b,再进行自身+1运算。b=++a,先自身+1运算,再将运算后的值赋给b。

+:如果两个字符串之间用加号连接,那现在的加号就是字符串连接符。“He”+“llo”=“Hello” 字符串数据和任何数据使用+相连接,最终都会变成字符串。

\n:换行 \b:退格 \r:按下回车键(Windows系统中,回车符是由两个字符来表示\r \n) \t:制表符,相当于Tab键

给字符加双引号:(“\”Heloo\”“)

赋值运算符

=、+=、-=、*=、/=、%=

x+=4:把左右两边的和赋给左边 相当于x = x + 4 区别x = x + 4编译失败,因为数据类型不同,不能赋值,x=+4编译成功,因为+=运算符在给x赋值时,会自动完成强行转换动作

比较运算符

==:相等于

!=:不等于

运算完的结果不是true就是false

逻辑运算符

&:and与

|:or或

^:XOR异或

!:not非

class OperatorDemo {
public static void main(String[] args) {
int a = 3;
int b = 4;
int c = 5;

//&逻辑与
System.out.println((a > b) & (a > c)); //false & false = false
System.out.println((a > b) & (a < c)); //false & true = false
System.out.println((a < b) & (a > c)); //true & false = false
System.out.println((a < b) & (a < c)); //true & true = true
System.out.println("---------------");

//|逻辑或
System.out.println((a > b) | (a > c)); //false | false = false
System.out.println((a > b) | (a < c)); //false | true = true
System.out.println((a < b) | (a > c)); //true | false = true
System.out.println((a < b) | (a < c)); //true | true = true
System.out.println("---------------");

//^逻辑异或
System.out.println((a > b) ^ (a > c)); //false ^ false = false
System.out.println((a > b) ^ (a < c)); //false ^ true = true
System.out.println((a < b) ^ (a > c)); //true ^ false = true
System.out.println((a < b) ^ (a < c)); //true ^ true = false
System.out.println("---------------");

//!逻辑非
System.out.println(!(a > b)); //!false = true
System.out.println(!(a < b)); //!true = false
System.out.println(!!(a > b)); //!!false = false
System.out.println(!!!(a > b)); //!!false = true
}
}


位运算符

<<  左移位
>>  右移位
>>> 无符号右移位
public class OperatorDemo
{
public static void main (String args [])
{
int a = 3 >> 2;
int b = 3 >> 2;
int x = -3 >> 2;
int y = -3 >>> 2;
System.out.println(a);
System.out.println(b);
System.out.println(x);
System.out.println(y);
}
}
运行结果为:0 0 -1 1073741823
对于正数来说没有任何区别。
-3的补码进行右移两位运算
11111111-11111111-11111111-11111101
11111111-11111111-11111111-1111111101
右移两位之后加上两位符号位11
-3的补码进行无符号右移两位运算
11111111-11111111-11111111-11111101
00111111-11111111-11111111-1111111101
右移两位之后用00补位


& 按位与

| 按位或

^ 异或(相同为0,相反为1)

三元运算符

格式:(条件表达式)?表达式1:表达式2;

特点:三个元素参与的运算

如果条件为true,输出表达式1,条件为false,输出表达式2

class OperatorDemo {
public static void main(String[] args) {
int x = 100;
int y = 200;
int z = ((x > y)? x: y);
System.out.println("z:"+z);
}
}


流程控制语句句

顺序结构:从上往下,依次执行

class ShunXuJieGouDemo {
public static void main(String[] args) {
System.out.println("程序开始了");

System.out.println("我爱Java");

System.out.println("程序结束了");
}
}


选择结构:按照不同的选择,执行不同的代码

if语句

三种格式

if(条件表达式){执行语句:}if后面如果没有{},则只执行离他最近的单条语句

if(条件表达式){执行语句:}else{执行语句:}

if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2

三元运算符 好处:可以简化if else 代码。 弊端:因为是一个运算符,所以运算完必须要有一个结果

if(条件表达式){执行语句:}else if(条件表达式){执行语句:}….else{执行语句:} 循环结构:做一些重复的代码

if语句的注意事项:

A:比较表达式无论简单还是复杂,结果必须是boolean类型

B:if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。

C:一般来说:有左大括号就没有分号,有分号就没有左大括号

Switch语句

格式:

switch(表达式)

switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
。。。。
default:
执行语句;
break;
}


格式的解释:

switch:表示这是switch选择结构

表达式:这个地方的取值是有限定的

byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是字符串

case:后面跟的是要和表达式进行比较的值

语句体:要执行的代码

break:表示中断,结束的意思,可以控制switch语句的结束。

default:当所有的值都和表达式不匹配的时候,就执行default控制的语句。其实它就相当于if语句的else。

switch语句的注意事项:

A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

B:default可以省略吗?

可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。

特殊情况:

case就可以把值固定。

A,B,C,D

C:break可以省略吗?

可以省略,但是结果可能不是我们想要的。

会出现一个现象:case穿透。

最终我们建议不要省略

D:default一定要在最后吗?

不是,可以在任意位置。但是建议在最后。

E:switch语句的结束条件

a:遇到break就结束了

b:执行到末尾就结束了

循环语句

for

/*
for循环格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
C:执行循环体语句;
D:执行控制条件语句
E:回到B继续。

注意事项:
A:判断条件语句无论简单还是复杂结果是boolean类型。
B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号

需求:请在控制台输出10次"HelloWorld"
*/
class ForDemo {
public static void main(String[] args) {

for(int x=1;x<=10;x++) {
System.out.println("HelloWorld");
}
}
}


While

/*
while循环的基本格式:
while(判断条件语句) {
循环体语句;
}

扩展格式:

初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}

通过这个格式,我们就可以看到其实和for循环是差不多的。

for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
*/
class WhileDemo {
public static void main(String[] args) {
//输出10次"HelloWorld"
int x=0;
while(x<10) {
System.out.println("HelloWorld");
x++;
}

}
}


do…while

/*
do...while循环的基本格式:
do {
循环体语句;
}while(判断条件语句);

扩展格式;
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
*/
class DoWhileDemo {
public static void main(String[] args) {
//输出10次HelloWorld。
int x = 0;
do {
System.out.println("HelloWorld");
x++;
}while(x<10);

System.out.println("--------------");

//求和1-100
int sum = 0;
int a = 1;
do {
sum += a;
a++;
}while(a<=100);

System.out.println(sum);
}
}


控制跳转语句

break:中断的意思,跳出单层循环,用在循环和switch语句中,离开此应用场景无意义。

continue:继续,跳出单层循环的一次,可以继续下一次,用在循环中,离开此应用场景无意义。

return:返回, 用于结束方法的,一旦遇到return,程序就不会在继续往后执行。

方法(函数)

定义:函数就是定义在类中的具有特定功能的一段独立小程序,也称之为方法

格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2….)

{

执行语句;

return 返回值;

}

返回值类型:函数运行后的结果的数据类型

参数类型:是形式参数的数据类型

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数

实际参数:传递给形式参数的具体数值

return:用于结束函数

返回值:该值会反悔给调用者

定义方法需要两个明确:

返回值类型:结果的数据类型

参数列表:参数的个数及对应的数据类型

方法重载:

在同一个类中,方法名相同,参数列表不同。与返回值无关。

参数列表不同:参数的个数不同,参数的对应的数据类型不同。

数组

一维数组

定义:同一种类型数据的集合。其实数组就是一个容器。

好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式

1.元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

2.元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

数组中有一个属性可以直接获取到数组元素个数:length

数组的遍历

class ArrayTest {
public static void main(String[] args) {
//定义数组
int[] arr = {11,22,33,44,55};

//获取每一个元素
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.println(arr[x]+"]");
}else {
System.out.print(arr[x]+", ");
}
}
}
}


二维数组

元素是一维数组的数组。

格式1:

数据类型[][] 数组名 = new 数据类型[m]
;

m:表示这个二维数组有多少个一维数组。

n:表示每一个一维数组的元素有多少个。

格式2:

数据类型[][] 数组名 = new 数据类型[m][];

m:表示这个二维数组有多少个一维数组。

列数没有给出,可以动态的给。这一次是一个变化的列数。

格式3:

数据类型[][] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}};

举例:

int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

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

二维数组的遍历

class Array2Test
{
public static void main(String[] args)
{
//定义二维数组
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

//遍历数组
printArry(arr);
}

public static void printArry(int[][] arr)
{
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr[x].length ;y++ )
{
System.out.print(arr[x][y]+" ");
}
System.out.println();
}
}
}


总结

这篇博客主要讲述了Java的基础知识,这都是以后写程序的基石,以后不管学的知识再高深,也都离不开这些。所以,学Java,这些基础必须得深深地印在脑中。

——- android培训java培训、期待与您交流! ———-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: