基础笔记

l  Java简介

l  Java开发环境配置

l  第一个HelloWorld程序

l  常量,变量,数据类型

l  运算符和表达式

一、             java简介、java相关知识及术语

  1. 简介
  2. JavaSE:Java Platform,Standard Edition(Java平台标准版)

     JavaEE:  Java Platform,Enterprise Edition(Java平台企业版)

JavaME:  Java Platform,Micro Edition(Java平台微型版)

  1. JDK: Java Development Kit(Java开发工具包)

JRE: Java Runtime Environment(Java运行时环境)

JVM: Java Virtual Machine(Java虚拟机)。

 

 

 

JVM(java虚拟机)

   

 

 

JRE

       
   

java核心类库

   

JDK

java开发工具(包括javac、java、javadoc等等)

           
 

java基础类库

     

二、            Java开发环境搭建:

下载、安装JDK——>配置环境变量

  1. java开发环境配置步骤:

PATH:   D:Javajdk1.8.0_65in;//在path变量值前面加上

(jdk1.5以后可以不用配置classpath)

  1. 在命令窗口键入java -version,查看jdk版本

javac  编译

java  运行

  1. Java开发工具

文本编辑器:记事本、editplus、notepad++、sublime_text …

集成开发环境:eclipse、intellji…

三、            第一个程序

1) Java源程序的结构:最小运行单位是类。

2) class——关键字

3) 类名,类的命名规范(首字母大写,多个单词时,后续单词首字母也大写,不允许用保留字)。     

4) main——程序的入口,程序必须有main方法。

5) 语句使用“;”作为结束(英文字符)。

四、            Java程序开发步骤:

1) 通过文本编辑器中编写java代码,将文件名的后缀改为.java文件

2) 调用javac.exe对.java文件进行编译,生成字节码文件(.class文件)

3) 调用运行工具java.exe对.class文件进行解释执行

不同平台的JVM是不同的,它们面向字节码文件的接口是相同的JVM的不跨平台性实现了java语言的跨平台性。

五、           Java注释:

单行注释://,注释内容从//开始到本行结束

多行注释:/*注释内容*/,在需要长篇注释时,可用多行也可用多个单行注释,多行注释不能嵌套。

文档注释:/** */,可以生成doc文档

六、            数据类型、常量、变量

  1. 数据类型

1) 基本数据类型,又称为源生数据类型

2) 引用数据类型

基本数据类型:

整数型:

               byte        字节       1字节    -27~27-1

               short  短整型      2字节  -215~215-1

               int          整形       4字节    -231~231-1   21亿多

               long       长整型   8字节    -263~263-1

        浮点类型:

               float              单精度   4字节

               double    双精度   8字节

        字符型:

               char        字符       2字节   

        布尔类型:

               boolean  布尔      1字节    true/false

  1. 数据类型取值范围

0111 1110

0*20+1*21

              13.26

char:’a’ ‘1’ ‘,’ ‘我’  ASII   ‘0’~‘9’:48~57  ‘a’~’z’:97~122

‘A’~’Z’:65~90

Unicode

  1. java常用转义字符:

① 表示换行;

② 表示制表符,相当于Tab键;

  1. 数据类型转换

l  隐式转换(自动转换):数据类型兼容、小转大

l  强制转换(显示转换):数据类型兼容、大转小时会造成精度丢失

          大、小是指:数据范围的大小

数据范围大小为(从小到大):byte→short(char)→int→long→float→double

字符可以和整数进行转换

  1. 变量

l   本质上说变量就是内存空间的一块存储区域,通过变量名就可以访问它。

l    变量声明方式

有2种:

1)    先声明后赋值

数据类型 变量名;

变量名 = 值;

2)    声明的同时初始化。

数据类型 变量名 = 值;

  1. 标识符命名规则:

首字符+其余部分;

l   首字母,字母,下划线,$符;

l   其余部分,数字、字母,下划线,$符。长度没有限制,变量名区分大小写

l   命名时应避开关键字(保留字)

l   符合驼峰命名法;首字符小写,从第二个单词开始单词首字母大写  userName

l   见名知意:一般和变量的用途对应,这样便于程序的阅读,不要用拼音。

  1. 从键盘获取输入

七、            运算符和表达式

  1. 运算符 (优先级别由高到低):

1)        算术运算符:*  /  +  -   %  ++  --

2)        关系运算符:>  <  >=  <=  = =  !=

3)        逻辑运算符:&&  ||  !

4)        赋值运算符:=  +=  -=  *=  /=  %=

注意: 1)int+double—结果为double类型

        2) / 当操作数两边都是整形,则商取整(余数丢掉取商),当操作数的两边有一个是浮点,则结果为精确小数

3) 当++单独使用的时候无论在前面还是后面都一样,与”=”一起用的时候,++在前,先自身加再使用,++在后先使用再自增。

4)String和任意数据类型相加结果都为String类型

?:

运算符优先级

八.随机数的获取

         import java.util.Random;

         Random r = new Random();

         r.nextInt(10)+1—1~10之间的整数

练习:

         获取23~38之间的随机数

 

 

数组

一、  一维数组(创建数组、内存)

二、  一维数组+循环(存取,遍历,求最大值/最小值)

三、  数据结构和算法

  1. 排序:冒泡、选择、插入
  2. 查找:遍历查找、二分查找

四、  Arrays类的使用

五、  二维数组

一、     一维数组

  1. 数组(Array)作用:引用数据类型,存放于堆中

1)  存放相同类型数据的一组数据。

2)  对同类型数据进行集中管理(遍历或存储。。。)

  1. 声明创建数组:

type[] 变量名 = new type[元素个数]/ type变量名[]= new type[元素个数];

比如:int[] a = new int[10];   数组名,也即引用a,指向堆中数组元素的首地址。

  1. 数组的初始化(赋值)
    1. int[] a = {1,2,3,4};//声明数组、分配空间、赋值
    2. int[] a = new int[]{1,2,3,4};//声明数组、分配空间、赋值
    3. int a[]=new int[3];a[0] = 1;a[1] = 2;a[2]=3;
  2. 数组的特点

1)  数组是引用类型,里面可以存放基本数据类型,也可以存放引用数据类型,基本数据类型数组保存的是值,引用数据类型数组保存的是堆里存放值的空间的首地址

2)  创建后长度不能改变

3)  每个数组都有一个名为length的只读属性,表示数组的长度。

4)  访问数组元素通过[]和下标

5)  新生成的数组,如果是引用类型数据,里面元素默认值为null,如果是基本数据类型,都是各自的默认值(数值型、char为0,boolean类型为false)

  1. 内存图

栈里存放基本数据以及对象的引用,堆里存放引用类型数据。

 

二、      一维数组遍历

                       //for循环遍历

                       for(int i=0;i<array.length();i++){

                                   System.out.println(array[i]);

                       }

                       for(int i=array.length-1;i>=0;i--){

                                   System.out.println(array[i]);

                       }

                       //增强for循环

                       for(int num:array){

                                   System.out.println(num);

                       }

三、  数组查找

  1. 遍历查找(线性查找)
  2. 二分查找(适用于有序数组

原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后继续。。。

n  四、一维数组排序:

  1. 冒泡排序

          重要思想:两两比较,将较小的升上去,较大的往下沉

          外层循环比较n-1轮

          内层循环:在一轮中将数字,与每一个数两两比较

原数组:10  6      4       3       2       1

第一轮:6   4       3       2       1       10

第二轮:4   3       2       1       6       10

第三轮:3   2       1       4       6       10

第四轮:2   1       3       4       6       10

第五轮:1   2       3       4       6       10

1

  1. 选择排序

简单选择排序

基本思想:在固定的位置上找合适的元素。 在一轮比较中找出未排序的最小值,放在它应该在的位置(找到之后再交换,交换次数比冒泡少)

  1. 插入排序

基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要 把第n个 数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序

四、Arrays类的使用

常用方法:排序(sort),复制(copyOf  rangeOfCopy),填充(fill),查找(indexof)

五、二维数组

  1. 定义,数组里面的每个元素都是一个一维数组
  2. 二维数组的创建

1)定义声明二维数组

type arrayName[ ][ ] ;

type [ ][ ]arrayName;

                           2)初始化

a)         静态初始化:数组在声明创建的同时对元素进行赋值

                         int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};//二维数组长度为3,

b)        动态初始化

                         int intArray[ ][ ];//声明

                         intArray=new int[3][];//创建、分配内存,前面一个[]指高维,指的是二维数组的长度

                         intArray[0] = new int[3];//高维元素赋值

                         intArray[1] = new int[4];

                         intArray[2] = new int[2];

                         intArray[0][0] = 1;//低维元素赋值

                         intArray[0][1] = 2;

                         intArray[0][2] =3;

                         intArray[1][0] =4;

                         。。。

  1. 二维数组特点:

1)   二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。

内存区域堆、栈区别:

a. 栈空间小,堆占空间大(目录)

b. 栈空间申请释放速度快,方法结束后,立刻释放

c.堆的数据申请、释放速度慢,垃圾回收机制统一回收

  1. 遍历

双重for循环遍历

l  循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。

l  循环包括:while循环、do…while循环、for循环

  1. while循环

当条件满足时,执行循环体。只要布尔表达式为true,循环一直进行

        while( 条件表达式 ) {

                 //循环内容

        }

while循环的三个表达式:

练习:输出10~19之间的数字

练习:求1到100之间的奇数之和与偶数之和。

  1. do-while循环

先执行,后判断,最少会执行一次

练习:输出10~19之间的数字

练习:求1到100之间的奇数之和与偶数之和。

l  do-while与while循环的区别:

  1. 执行次序不同。While循环先判断,再执行;do-while循环先执行,再判断。
  2. 一开始循环条件就不满足的情况下,while循环一次都不会执行,do-while循环则不管在什么情况下都至少执行一遍。

l  for循环:

for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化表达式① ; 条件表达式② ; 递增(递减)表达式③){
      执行语句;   //一段代码
}

1)   表达式①,初始化变量

2)   表达式②,如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。

3)   表达式③,更新循环控制变量。

4)   再次执行表达式②。。。

练习:输出10~19之间的数字

练习:求1到100之间的奇数之和与偶数之和。

l  break,continue

  1. break主要用在循环语句或者switch语句中。switch中,用来跳出整个语句块。循环中,break跳出当前循环
  2. continue跳过当次循环,直接跳转到下一次循环。

练习:求1到100之间的奇数之和与偶数之和。用continue

l  for循环与while循环:

1)        for循环多用于循环次数已知,while多用于循环次数未知

2)        for循环中定义的循环变量在循环完毕后,被系统回收。while循环中用到的变量在循环完毕后还存在于内存中,原因:变量的作用域

3)        两个循环可互换

l  二重循环

循环体中包含循环语句的结构称为多重循环,循环嵌套越多,效率越低。

在二重循环中,外循环执行一次,内循环执行完毕后才执行下一次外循环。

 

         ­

原文地址:https://www.cnblogs.com/yangshuyuan1009/p/9831700.html