文档章节

JAVASE初级笔记

超人学院
 超人学院
发布于 2016/07/26 17:24
字数 3608
阅读 11
收藏 0

  第一步:新建一个文本文档,文件名为Hello

  第二步:修改文件后缀名为 .java

  第三步:在Hello.java文件中,写入这样一段代码:

public class Hello{

      public static void main(String args[]){

           System.out.println("做人没有梦想,那跟咸鱼有什么分别");

      }

}

 

 

 

 

 

 

  注意:代码中的中括号大括号分号等,都必须是英文字符

  第四步:打开一个DOS窗口,使用javac命令编译java源文件

  注意:使用javac命令的前提是要正确的配置path环境变量

  第五步:确保生成Hello.class文件,使用java命令运行字节码文件

if(a[i] > a[j]) {        int t = 0 ;

    t = a[i];

    a[i] = a[j];      a[j] = t;

}大括号内的语句都属于if语句块

 

 

  几款代码编辑工具

  UltraEdit、Notepad++、EditPlus

 

  变量:intx=4;

n 局部变量:

u 定义在方法内的变量,或语句块内的变量

u 局部变量必须赋初始值,否则无法使用。

n 成员变量:

u 定义在类里面,方法的外面,属于对象,每个对象拥有自己的成员变量,互相不冲突

u 成员变量未初始化时,系统会自动初始化,给默认值。

n 静态变量:(也叫类变量)

u 定义在类里面,方法的外面,static关键字修饰。属于类,所有对象共享一个变量

n 常量: final int y = 6;

  JAVA的命名规范:

n 不可跟关键字重复

n 只能包含数字、字母、下划线、$,其中数字不可以开头

  关键字:

  数据类型:

 

 

 

 

 

 

 

 

n 分为两大类:基本数据类型和引用数据类型

n 引用类型的变量也叫指针,它保存了一个对象的内存地址

n Student  stu =  new Student();

stu 就是引用变量,把一个对象赋给stu,也就意味着stu此刻保存了对象的地址。我们可以通过stu来调用这个对象的方法,或者访问对象的属性。

注意引用变量也是有类型区分的,stu 的类型是Student,因此有时我们会说stu这个对象是Student类型的。

 

 

 

 

 

 

 

 

  基本数据类

n Int 整数型 4字节

n Short 短整型 2

n Byte 字节型 1

n Long 长整型 8

n Float 单精度浮点型 4

n Double 双精度浮点型 8

n Char 字符型 2

n Boolean布尔型 1

  类型转换

u char型、short型、byte型运算时,只能转换为int型

u 自动转型(类型的自动提升)的原则范围由小到大、精度由低到高

u int a =4, b=5;

u (float) (a*b) 注意在类型转换时,运算的优先级:

u 如果写成了(float)a*b,则会先把a转成float类型再与b进行计算,那跟我们想要的结果就不一样了,因此这里要特别小心。

  转义字符: \反斜线加上字符

n \t         \n        \\         \”

  运算符:

n 算术运算符

u + 、-、*、/、% 取模 求余数

n 关系运算符

u >、<、==、!=、>=、<=、

n 一元运算符

u +、-、~、!

n 赋值运算符

u =

n 逻辑运算符

u &&、|| 、!

n 递增、递减运算符

u ++、--

n  三目运算符

u (布尔表达式) ? 表达式1 : 表达式2

u 布尔表达式的值为真时,运算结果为表达式1,否则结果为表达式2

u 例1: (a == 30)  ?  x +=5 : x = 0;

l 如果a等于30,则执行x+=5,否则执行x=0;

u 例2:String str = (a == 30)  ?  “哈哈” : “呵呵” ;

l 如果a等于30,str的值是 哈哈,否则 呵呵

  运算符的优先级关系

 

  if语句的使用

n  If语句接受一个逻辑表达式,判断真假

if(a>30) {

    System.out.println("aaaa");

} else if(a < 25){

    //………

}

 

 

 

 

   

 

  switch语句

n  只能做等值的判断(==),并且只能判断int变量或可以转换成int型的变量

n  小心case穿透,记得要加break语句

n  注意理解if和switch的用法上的区别,理解它们的使用场合

 

char c = 'm';

switch(c) {

    case 'x' : {

System.out.println("x");

System.out.println("x");

break;

}

    case 'm' : System.out.println("m"); break;

    case 'z' : System.out.println("z"); break;

    default : System.out.println("默认情况");

}

 

 

 

 

 

 

 

 

 

  While循环

int i = 0;

while(i<100/*循环条件*/) {

    System.out.println("循环第"+i+"次");

    i++;

}

 

 

 

 

 

dowhile循环:第一次执行循环体,不判断条件!

  For循环

n  99乘法表

for (int i=0; i<=10; i++){

      System.out.println(i);

}

//打印出i的值,观察结果

第一步:建立一个for循环

u  


 

for (int i=0; i<=10; i++){

      for(int j=0; j<=10; j++){

           System.out.println( i );

           System.out.println( j );

}

}//打印出i的值,观察结果, 打印j的值观察结果

第二步:建立循环嵌套

u  




 

for (int i=0;i<=10;i++){

      for(int j=0; j<=i; j++){

           System.out.println( i );

           System.out.println( j );

}

}//再观察结果

//打印出i的值,观察结果

第三步:修改子循环的循环条件,让子循环的次数变成动态值

u  





 

  break语句和continue语句

n  break: 终止当前循环体,或switch 语句块

n  continue:终止本次循环,直接进入下一次循环

  DEBUG跟踪调试程序

n  第一步设置断点

n  第二步以DEBUG模式来运行程序

 

int[] a = {23, 99, 8, 10};

int[] b = a;

数组的内存结构

 

堆内存

0

1

2

3

23

99

8

10

栈内存

a

#9852

b

#9852

 

注意!数组的下标从0开始

数组里存放的整型数

 

 

 

 

 

 

 

 

 

 

 

 

  数组  若干相同类型的数据的集合

n  double[]  arr = new double[5];

n  double[]arr = {2,6,3,7,8};

n  double[]arr = new double[]{2,6,3,7,8};

n  arr.length获得数组的长度

n  数组的下标从0开始  所以arr[2] 代表数组的第三个元素

  二维数组 一个存放数组的 一维数组

n  int[][]arr = new int[5][5];

arr[0]= new int[5];[A1] 

n  int[][] arr2  =  { {1,2,3}, {2,4,5},  {5,6,7},  {1},  {4,4,4,4}};

n  arr2[0] 代表第一个子数组   也就是 {1,2,3}

n  所以要访问子数组的第三个元素,应该:arr2[0][A2] [2]

堆内存

0

1

2

3

栈内存

arr

 

1

2

3

 

2

4

5

arr[0]

arr[1]

arr[2]

arr[3]

 

 

 

 

 

 

 

 

 

 

 

  多维数组

n  int[][][][]  arr = new int[5][4][3][2];

  冒泡排序、选择排序法、快速排序

n  数组元素的交换  有元素a、b、

u  首先定义一个临时的变量temp

u  temp= a;
a = b;
b = temp;

  增强for循环(for-each)

Product[]  plist = {new Product(), new Product(), new Product()};

for( Product  p  :  plist) {

       p.toString();

}

//增强for循环写起来很简便,但也有缺点,由于它不像for循环有循环变量,因此我们无法通过下标去访问数组,但是,对于上面这个增强for 循环来讲,操作对象p,同样可以改变数组里面的对象的属性,这是为什么呢?

 

 

 

 

 

 

 

  面向对象的基本思想

n  从传统的面向过程发展而来的。

n  面向过程的思维:

u  第一步买菜,第二步洗菜,第三步切菜,第四步炒菜

n  面向对象的思维:


对象

第一步采购员 完成本职工作

u  第二步帮厨     完成本职工作

u  第三步案板      完成本职工作

u  第四步大厨     完成本职工作

n  把不同的工作交给不同的角色(对象)来处理,每个对象负责自己的工作。这个过程中还体现出了封装的概念!

n  类和对象

u  类就是一个模板,或者可以看做是我们自己定义的数据类型

u  对象就是利用模板创建的一个具体事物,或者可以看做是使用自定义数据类型声明出来的变量,在JAVA中我们把对象叫做一个类的实例

n  如何定义一个类?

public  class  Product {

       public  static  int  num = 10;

}

 

 

 

 

 

l  成员变量: 普通的成员变量和静态成员变量(类变量)

n  类变量是所有对象共享的,可以通过类名直接访问:

n  Product.num 而不需要构造对象

l  如何创建一个对象

n  类名  对象名 = new 类名();

n  Product  p1 = new Product();

l  Product()被称之为构造方法,它是一个很特殊的方法:

n  构造方法名必须和类名相同

n  构造方法不可以写返回值类型

n  构造方法默认情况下不需要显示的去声明,系统帮我们默认创建

n  调用构造方法必须要跟new关键字配合

n  系统默认创建的构造方法是无参的

n  一旦我们定义了任何一个构造方法,系统默认的会自动失效

n  构造方法可以同时定义多个:在JAVA中,同一个类里,多个方法名称相同,为了区别,要求参数不能一样,这种形式叫做方法重载

l  类的继承

public  class  Product  extends  Object{

       public  static  int  num = 10;

}

 

 

 

 

n  继承的最大作用是能够让子类拥有父类的方法和属性,所有子类都遵循父类的特性,并且在父类的方法不能满足需求的时候,我们可以通过重写覆盖父类的属性和方法。

n  同时,继承在某种程度上说,也是一种分类的方式,我们说类是一种模板,通过类来构造对象。那么模板也是有分类的。

n  例如:动物类可以分为:无脊椎动物和脊椎动物
其中脊椎动物又分为鱼类、两栖类、爬行类、鸟类、哺乳类等。
有了继承,分类可以更加明细,更加清晰

n  [A3] 子类继承父类的属性和方法

u  静态属性是不继承的

u  私有属性子类不能够直接访问

u  JAVA当中只有单继承

u  创建子类对象的时候,在调用子类构造方法的时候,会先调用父类的构造方法

u  如果父类还有父类,会从最顶层的父类构造方法开始调用,一直到子类的构造方法

n  子类继承父类的属性和方法,都可以自己重写,重写之后,覆盖父类的方法,这个叫做方法的重写

n  权限修饰符:private  public protected  默认(什么都不写)

修饰符

同一个类

同一个包

子类

不同包

Public

Protected

 

默认

 

 

Private

 

 

 

n  类的封装

u  将某些属性或方法设为私有的,防止外界直接访问
提供一个公有的方法,让外界通过公有方法间接访问

u  封装的主要目的其实在于隐藏,隐藏不必要的细节过程。例如一台电脑,内部结构异常的复杂,生产厂商将内部的细节封装起来,我们只能通过鼠标和键盘来操作电脑,这样的好处在于,我们不必了解其内部的复杂构造,而只需要键盘简单的操作就可以使用电脑。

u  再比如一台汽车,我们操作一台车只能通过油门、刹车、方向盘。其他的细节内容都被封装了起来,发动机内部到底做了什么事情,我们无法得知,当然我们也不愿意去关心那些细节问题,我们只需要会使用油门和方向盘就足够了,这不正是封装带来的好处么?

n  [A4] super、this分别代表:

u  super代表了父类对象的引用

u  this代表了当前对象的引用

n  static关键字

u  用static修饰的变量和方法,叫做静态变量或静态方法,从属于类,可以通过类名直接调用。

n  package关键字

n  import关键字

n  final关键字

u  修饰变量:变量的值不可以改变!并且必须在定义的时候赋初值

u  修饰方法:这个方法将不能够被子类重写

u  修饰类:该类将不能够被继承

l  类的多态:可以理解为多样性,或多种表现状态

n  方法的重载也算是多态的一种表现形式

n  方法的重写同样可以表现出多态的特性

n  举例:

      父类   ss =  new 子类();

子类被转型成父类,由于父类的层次比子类高,因此这里可以进行自动转型。无需手动干预。

转型之后,ss为父类的引用,此时ss只能调用父类的方法,子类特有的方法,ss无权调用。

只有一种特殊情况可以使用子类的方法,就是父类中的方法被子类重写,此时父类方法被覆盖,就可以调用子类方法。

举例:

 

public class Animal {

    public int attack = 100;//攻击力

   

    public void sound() {//声音

       System.out.println("Animal sound");

    }

}

 

 

 

 

     

     

有父类Animal,包含一个方法名称为sound

子类重写父类的sound方法

public class Cat extends Animal {

    @Override

    public void sound() {

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

    }

    public void catchMouse() {

       System.out.println("抓老鼠");

    }

}

 

 

 

 

 

 

 

 

此时若有父类引用指向了一个子类对象cat

Animal  animal =  new  Cat();

父类引用调用sound方法,执行的仍然是子类对象的sound方法

   这时,sound方法所表现出来的结果,是多种多样的,根据子类的不同,得到的结果也不同。同样都是sound 方法,却有多种结果可以出现。我们将这种情形称之为多态。

   所以说重载、重写都是多态的表现,也就是说方法名称相同,但具体操作不同。比如我们说“吃”这个字,在不同的情况下我们可以有多种含义,例如:吃饭、吃钉子、吃官司等,具有相同的名称,但具体的操作却不一样。再比如“开”这个字,开车、开窗、开饭、开局等等。

了解更多详情请登录超人学院网站http://www.crxy.cn或者每周日晚八点半相约免费公开课 https://ke.qq.com/course/53102#term_id=100145289  具体详情请联系QQ2435014406

© 著作权归作者所有

上一篇: JAVASE中级笔记
下一篇: Java爬虫框架
超人学院
粉丝 114
博文 335
码字总数 388917
作品 0
昌平
CTO(技术副总裁)
私信 提问
java&javaweb学习笔记(汇总)

我的java&javaweb学习笔记(汇总) 笔记分为两大部分:javase和javaweb javase javaweb 笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解java基础语法,想进一步深入学习的人 gi...

brianway
2016/02/09
3.2K
2
JavaSE学习笔记系列:数组

数组可以看成是多个相同数据类型的数据集合,对这些数据的统一管理。 数组变量属于引用类型,可以看成是一个对象,数组中的每个元素可以看成是该对象的成员变量。 数组中的每个元素可以是任何...

landy8530
2017/12/19
0
0
《PHP框架Laravel学习》系列分享专栏

《PHP框架Laravel学习》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201735.html 文章 Laravel教程:laravel 4安装及入门 Laravel4中文手册下载 Laravel配置教...

开元中国2015
2018/11/06
163
0
Hadoop实战初级部分学习笔记

目前正在学习《Hadoop实战——初级部分》视频,写了点笔记分析给大家,欢迎交流。 好像没法上传附件,,去这下载吧:http://sishuok.com/forum/posts/list/6910.html...

小生1
2013/06/28
243
0
JavaSE|Java Collections API

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darlingwood2013/article/details/89350908 笔记内容来自《数据结构与算法分析 Java语言描述》第三版 JavaSE...

叶晚林
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部