Java 基础知识大全(一)

以下是(博主)基础时 做的一些总结,希望能够对各位看官提供帮助,如有哪里整理思路不够明确又或者有错误,烦请指出,(博主)定当及时改正。谢谢大家

Java学习方法

  • 先理解
  • 记忆是重点

1、抄笔记 2、多看书

  • 学习英语单词

 

计算机组成

硬件

Cpu 、硬盘、内存、显卡、网卡、主板、电源

存取速度:

寄存器>高速缓存>内存>硬盘

只有硬盘可以永久存放数据,前三个断电后数据消失

 

Cpu 运算包括算术运算和逻辑运算

Cpu的工作就是 取数,计算,存数

Cpu做什么操作是由指令来指示的

而且cpu只能理解有限的一些指令,这些指令的集合叫做机器语言

1+1用机器语言如下:1001000 1101110

 

汇编语言,是在机器语言基础上发展而来的

1+1用汇编语言如下:mov H10, H101  mov H11, H111  mov H01, H011

 

高级语言(js,java,c++)

1+1

编译原理

把高级语言翻译成机器语言的过程,叫做编译

 

编译

Java 基础知识大全(一) 

高级语言分为两类:

解释型语言:不需要手动编译,直接运行,js是解释型语言

编译型语言:需要手动编译,再运行,java,c++是编译型语言

 

解释型的语言也需要编译,但是是由执行程序自动编译的。

每次执行都会编译一遍

编译型语言,只需要编译一次就行了

 

Java概念

Javase   java  standard(标准)  edition(版本) java基础

javaee   java  enterprise(企业) edition(版本) 做网站系统开发

Javame  java  mobile(移动)    edition    做移动开发

现在的移动软件是 Androidjava语言开发)(Android操作系统) iosobject-c语言开发)(苹果操作系统)

Jdk   java development(开发) kit(工具包)  使用这个写java代码和编译java代码

Jre   java  runtime(运行) environment(环境) 使用这个运行java字节码

Jvm  java virtual(虚拟的)  machine(机器)Java虚拟机,在这个软件上运行java字节码

源代码,就是程序猿写的代码,程序猿能看懂

字节码,是由java编译器编译后的代码,是java虚拟机能看懂

Jdk中包含了java编译器

Jvm中包含了jre

java运行机制1

Java 基础知识大全(一)

Jdk下载

Java现在是由oracle公司来管理的。Oracle公司(甲骨文)最出名的产品是oracle数据库。

Java最初是由sun公司开发的。

Java是开源的,免费的,跨平台的

地址 www.oracle.com

下载以后文件为:jdk-7u45-windows-i586.exe

7u代表jdk1.7windowswindows版本,86代表32位操作系统

现在主流的三种操作系统:windows  linux  苹果系统

Jdk安装

 打开安装包,使用默认配置,直接下一步到底。

下面是jdk安装后的目录:

Java 基础知识大全(一)

环境变量

如果要运行一个可执行文件,就必须要知道它的具体位置

Cmd搜索文件机制

cmd中,执行一个可执行文件,它会在当前目录搜索这个文件,如果找不见就去path中搜索这个文件,如果再找不到就报错。

Cmd中,cd 命令是打开一个文件夹

Cd ..  是打开上一级的文件夹

使用tab键可以让系统提示

Path和classpath

因为每次都要进入可执行程序所在的目录比较麻烦,所以可以将可执行程序所在的目录加入到path中。

 

Java配置环境变量:

第一种方式:打开环境变量,找到path,在path的末尾加上分号,然后加上C:\Program Files (x86)\Java\jdk1.7.0_45\bin

第二种方式:打开环境变量,先新建一个变量JAVA_HOME值是C:\Program Files (x86)\Java\jdk1.7.0_45。然后,找到path,在path的末尾加上分号,然后再加上%JAVA_HOME%\bin。

配置完成后,打开cmd,输入java -version,如果显示正常,说明配置成功。

Java -version是显示java的版本,version是版本

 

第一个java程序

  1. 新建一个文本文件Hello,后缀名改为java
  2. 在文件中写上以下内容

3、修改文件编码为ANSI(就是GBK编码)

编译

使用javac来编译java源文件,编译成功后,产生一个.class文件,这个.class文件,叫做字节码文件

编译命令:javac  Hello.java  

运行命令:java   Hello

 

Java程序解读

Java 基础知识大全(一)

Java程序执行原理

Java 基础知识大全(一)

Java程序结构

Source 资源  file 文件  method 方法 statement 语句

一个源文件中可以有多个类。

一个类中可以有多个方法。

一个方法中可以有多条语句。

Java 基础知识大全(一)

剖析类

Java 基础知识大全(一)

System.out.print("你好");输出字符串

System.out.println("你好");//输出字符串,然后换行

System.out.print("你好\n");输出字符串,然后换行

System 系统  out 输出  print 打印  line 行

变量

int x = 5;声明一个整型变量x,赋值为5

整数-1,1,2,23

整型变量是保存整数的变量,并且只能保存整数。

//js是弱类型的语言

//js中变量声明后,其类型可以再改变

//js的变量声明后,可以保持任何类型的值

Java是强类型的语言,java中的变量声明后,其类型不能再改变

Java的变量声明时就必须指定它的类型

变量声明

int x;声明一个整型变量x。

Java中,变量必须先声明再使用,声明时必须要指定其类型。

声明变量时,系统会分出一块存储空间。

赋值

x = 5;将整数5赋值给x,也就是将5保存在变量x中。

赋值时,系统会将数值存放到相应的存储空间中。

变量初始化

声明变量时立即赋值,叫做初始化

声明变量,只有一次,初始化也只有一次,赋值可以有多次。

 

进制

十进制

逢十进一 0123456789

二进制

逢二进一 01

二进制转十进制

01=1; 10=2; 11=3; 100=4; 101=5; 110=6; 111=7

1101= 1 + 0*2 + 1*4 + 1*8

=1*20  + 0*21 + 1 * 22 + 1*23  (从后往前算)

1101= 1 + 0*10 + 1*100 + 1*1000

=1*100 + 0*101 + 1 * 102 + 1 *103   (从后往前算)

 

101010 =2+8+32

16进制

逢16进一     0123456789ABCDEF

01=1;02=2;03=3;04=4;.....09=9;0A=10;0B=11;0C=12;0D=13;0E=14;0F=15

10=16;11=17......19=25;1A=26

0D5E9F=15*160 + 9*161 + 14*162 + 5*163 + 13*164

 

比特  bit

字节

1byte = 8bit 也就是说1个字节是8位  10010010

KB

1kb = 1024byte 1kb是1024个字节

MB

1mb=1024kb

GB

1gb=1024mb=1024*1024kb=1024*1024*1024byte=1024*1024*1024*8bit

基本数据类型

byte(-128---127)

整型的,一般不用来表示整数,而是用来表示数据

char

字符,2个字节,它可以表示一个英文字母,或者汉字

char c = ‘a’;  char b = ‘中’;

short

短整型 2个字节

int

整型是4个字节是32位

long

长整型是8个字节是64位

float

单精度浮点数(小数),4个字节

double

双精度浮点数   8个字节

boolean

4个整数,两个小数,一个字符、一个布尔

八种基本数据类型都是哪八种?

类型转换

把范围小的数字赋值给范围大的变量是可以的。

把范围小的数字赋值给范围大的变量会自动进行类型转换。

将范围大的数字赋值给范围小的变量,可能会损失精度。

如果我们分析后认为数据不会丢失,那么可以进行强制类型转换。

int i = (int)100L;

类型转换,转换的是数据的类型,而不是变量的类型。

整数的默认类型是int,小数的默认类型是double.

给一个变量赋值,那么这个数据的类型必须和变量的类型一样

 

命名规范

类名首字母大写,使用驼峰命名法。

可以使用_ 、$、字母开头,但是不能用数字开头

变量名和方法名是首字母小写,使用驼峰命名法。

运算符

 

算术运算符

+ - * / %

int类型的数字,+ - * / %的结果都是int

4/5结果是0  5/4结果是1

同种类型的数字进行算术运算,结果仍是同一种类型

不同类型的数字进行算术运算,结果是范围更大的那种类型

逻辑运算符

逻辑运算符两边是比较运算符的结果.

与&& 两边同时为真结果才是真,只要有一边为假,结果就是假

或||  两边同时为假结果才是假,只要有一边为真,结果就是真

非!  

短路 如果逻辑与左边为假,右边的逻辑就不会运行

如果逻辑或左边为真,右边的逻辑就不会运行

比较运算符

>  <  ==  >=  <=  !=

比较运算符的结果是true或者false

位与 &

位或  |

递增和递减

int j = i++;//是先赋值再自增

j = ++i;//是先自增再赋值

看++在前面还是在后面,在后面就是后自增,在前面是先自增

条件运算符(三目运算符)

int i = 1<2? 3:4;  //3

int j = 1<2? (2>3? 4:5) : (4>5? 7: 8);//5

Classpath

条件语句

If语句

if(条件表达式){

//如果条件表达式为真,就执行这块的代码

}else{

//如果条件表达式为假,就执行这块的代码

}

Switch语句

循环

while循环

do while

for循环

函数

一个函数是一系列语句的集合,它是可重用的。通常情况下,你的程序会停下正在做的事情,转而去做其他事情。比如,你正在读一本书,突然想起来需要打一个电话,然后就放一个书签,记录当前读到哪个位置了,接着去打电话。打完电话回来,继续从书签位置开始读书。

在程序中,执行的顺序是从上往下,直到遇到一个函数调用。一个函数调用是一个表达式,这个表达式告诉cpu打断当前函数(函数1),去执行其他函数(函数2)。Cpu在当前的执行点(在函数1中)上放置一个书签,然后调用另外一个函数(函数2),当这个函数(函数2)执行完毕,cpu回到之前函数(函数1)的执行点上,继续向下执行。

函数1叫做调用者,函数2叫做被调用者。

返回值

在被调用者中,我们可以使用一条返回语句,指定一个返回值给调用者。当被调用者执行完毕后,返回值会给调用者。准确来讲,返回值会替代函数调用

Js的函数声明中,不需要声明返回值的类型。

 

本地变量,作用域,生命周期

当我们讨论变量时,经常涉及到两个概念:作用域和生命周期。

变量的作用域决定了变量可以被访问的范围。变量的生命周期决定了变量什么时候创建,什么时候销毁。

被定义在块内的变量,称为本地变量。本地变量的作用域是块级的。就是说出了块的右括号就不起作用了。

作用域指的是范围,从哪开始可以用,到哪以后不能用。

生命周期指的是时间,什么时候开始可以用,什么时候以后不能用。

在一个作用域中不能有同名的变量。

本地变量的作用域是从声明时开始,到块(声明时所在的块)的右括号结束。

内嵌的块被认为是外部块的一部分,在外部块定义的变量,可以在内嵌的块中被访问。

在一个块中定义的变量,只能在这个块中被访问,因为每个函数都有自己的块,所以在一个函数中定义的变量不能被另一个函数看见。

这就意味着不用担心两个函数之间有命名冲突。

本地变量的生命周期:本地变量在变量声明时创建,出了块(声明时所在的块)右括号后销毁。

函数调用和变量创建

函数参数

函数的返回值是由被调用者返回给调用者。

函数的参数是由调用者传递给被调用者。

在许多情况下,将信息传递给被调用的函数是非常有用的。比如说:当我们想写个函数去将两个数相加,当我们调用这个函数时,需要告诉他,这个两个数都是什么。这是通过函数参数来实现的。

参数分为实际参数和形式参数。

形式参数是在被调用者中声明的参数。

实际参数是调用者传递给被调用者的数据。

printValue(6); // 6 是实际参数

public static void printValue(int a){//a是形式参数

}

实际参数的数量和类型必须和形式参数匹配。

 

当函数被调用时,所有的形式参数被创建为变量。实际参数的值被拷贝到相对应的形式参数中。这个过程叫做传值

当同时使用参数和返回值时,我们创建函数,它接受数据输入,然后进行一些计算,然后将结果返回给调用者

函数的主要作用:接受输入,进行计算,返回结果。

函数能够被重用的关键在于形式参数。因为形式参数允许函数在不必事先知道具体数据的情况下进行处理。

 

数组

数组是一种数据类型,它能让我们使用同一个标识符去访问同种类型的许多变量。

int[] a = new int[10];

a是整型数组,这个整型数组中有十个元素,每一个元素都是int类型的变量。

a是变量,a是整型数组类型的变量。

数组的下标从0开始。

int b = a[2];//将数组的第三个元素赋值给b

fun1(a[3] +3);//将数组的第四个元素的值+3传递给fun1

a.length//数组的长度,是数组可以放几个元素

数组的下标范围 0 - (length-1)

超出数组下标范围会出现数组下标越界异常ArrayIndexOutOfBoundsException

数组初始化

//数组初始化方式1

              int[] a = new int[3];

              a[0] = 1;

              a[1] = 2;

              a[2] = 3;

//数组初始化方式2

              int[] b = new int[]{1,2,3};

遍历数组

for循环 foreach循环

 

//foreach,增强的for循环

for(char cc : c){

       System.out.println(cc);

}

//c是要遍历的数组,char是元素的类型

//cc是代表当前元素

//遍历的过程:先声明一个char类型变量cc

//第一次循环取c中的第一个元素,赋值给cc

//第二次循环取c中的第二个元素,赋值给cc

//....

//直到将c的所有元素遍历完毕

             

数组作为参数

       public static void fun1(int[] a){

}

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

fun1(arr);//将数组arr作为参数传递给fun1

 

基本类型数据传参

int b = 2;

int c = b;

c = 3;

System.out.println(b);//b = 2,变量的值不会变化

public static void fun1(int a){

              a = 3;

       }

int a = 1;

       fun1(a);

System.out.println(a);//a的值不会变化

基本类型的变量作为参数传递给一个函数,它的值永远不会发生变化。

数组类型传参

Java 基础知识大全(一)

Java 基础知识大全(一)

public static void main(String[] args){

                   int[] arr1 = new int[]{1,2,3};

                   fun1(arr1);

                   System.out.println(arr1[0]);

                   fun2(arr1);

                   System.out.println(arr1[0]);

         }       

         public static void fun1(int[] a){

                   a[0] = 10;

 

         }

         public static void fun2(int[] a){

                   a = new int[]{4,5,6};

         }

Java 基础知识大全(一) 

数组类型变量传参

Java的类型有两种:基本类型,引用类型。

数组是属于引用类型。

命令行参数

public static void main(String[] a){}//a是命令行参数

在命令行中使用 java 类名 参数1 参数2 ....可以向main方法传递参数。

数组相关算法

最大值

Java 基础知识大全(一)

最小值

Java 基础知识大全(一)

求和   

Java 基础知识大全(一)

求平均值

Java 基础知识大全(一)

反转数组

Java 基础知识大全(一)

 

 

 

多维数组

Java 基础知识大全(一)

 

Java 基础知识大全(一)