java学习

标签: java
5人阅读 评论(0) 收藏 举报
分类:

编译 javac 类名称
运行 java 类名称
1.pulblic class 类名称{} 文件名称必须与类名称一致,且一个文件里只能有一个public class类

2.class 类名称{} 文件名称与类名称可以不一致,编译生成的文件与类名称一致,且一个文件可以有多个,此时生成多个文件

3.所有程序都是从主方法开始的,主方法:public static void main(String args[]) {},类似于c语言的int main() {},这里的String args[]是执行时调用 java 类名称 后跟的以空格分开的String参数

4.java中不同类型进行运算会强制转换为具有更大范围的类型,byte < char = short < int < long < float < double < String,java中short类型和c语言中int类型范围一样,byte是8位,要使用long在数字后面加l或L,float类似

5.String类型中要使用“”在前面加\

6.java中变量的类型有:

  • 类变量:独立于方法之外的变量,用 static 修饰。类变量也称为静态变量静态变量,除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。

  • 局部变量:类的方法中的变量。局部变量只在声明它的方法、构造方法或者语句块中可见;且没有默认值,所以局部变量在声明时必须初始化,才可以使用。

  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;


public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}

实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。即实例变量使用前要new一个对象,而静态变量则不用new

对于下面的程序,无论创建多少个实例对象,永远都只分配了一个 staticInt 变量,并且每创建一个实例对象,这个 staticInt 就会加 1;但是,每创建一个实例对象,就会分配一个 random,即可能分配多个 random ,并且每个 random 的值都只自加了1次。

public class StaticTest {
private static int staticInt = 2;
private int random = 2;

public StaticTest() {
    staticInt++;
    random++;
    System.out.println("staticInt = "+staticInt+"  random = "+random);
}

public static void main(String[] args) {
    StaticTest test = new StaticTest();
    StaticTest test2 = new StaticTest();
}
};

7.一个类中定义了一个构造方法后,则不再自动生成一个默认构造方法,当生成一个对象时会分配栈空间,而对象中的方法属性等会分配堆空间,如果使用对象的赋值则会指向同一个堆空间,改变其中一个对象的属性的值则会影响另一个对象的属性

8.使用字符串的比较时要使用 字符串名.equals(字符串名)而不能使用==,因为==比较的是指向的堆内存地址是否一样,只有通过=赋值的字符串才指向相同的堆内存地址,否则即使字符串内容相同堆内存地址也未必相同。而且使用equals和字符串比较时一定要把已知字符串写在前面,因为equals会处理null字符串

9.String的实例化方法:
1.直接赋值String example = “STRING”;只开辟一块堆内存空间
2.构造方法String example = new String(“STRING”);开辟两块堆内存空间,而且example并不指向STRING的空间,可以使用intern()方法将两块内存空间变成同一块,指向STRING,字符串内容一旦声明则不可改变,String类对象内容的改变是依靠引用关系的变更实现的,即改变指向的堆内存而不改变堆内存的内容;

10.bool String.contains(String) 可以用于判断String中是否有需要字符串
bool String.startsWith(String,int)可以用于判断String中在int后面是否以所需字符串开头,int可以省略,同样还有endsWith
String String.replaceAll(String origin, String replace)可以将origin替换成replace
String String.replaceFirst(String origin, String replace)可以将第一个origin替换成replace
String substring(int beginindex)从指定索引截取到结尾
String substring(int beginindex,int endindex)截取部分子字符串的数据。
String[] str.split(String)表示按照String进行拆分,最后没有String
String[] str.split(“”)表示按照每一个字符进行拆分
String[] str.split(String, int limit)表示拆分出的字符串数组最多有limit个,其他的不拆放在最后一个
String.trim()去掉前后的空格,中间的空格不会受到影响

11.static关键词修饰的属性可以在不创建实例化对象的情况下访问和修改,使用类名称.set方法修改,而且所有该类的实例化对象共享这个属性,static方法不能调用非static方法和属性,static在编译时就初始化

12.内部类,在一个类中可以定义另一个类,这个类成为内部类,内部类可以直接访问外部类的私有成员,外部类也能直接访问内部类的私有成员,要创建内部类的实例化对象应该用new 外部类.new 内部类(),也可以使用static 修饰内部类,此时创建实例化用new 外部类.内部类() ,且内部类不能访问外部类非static的成员,可以使用private修饰内部类使除外部类以外不能访问内部类
13.
1.在方法中也可以定义内部类
2.方法中定义的内部类可以访问外部类的final成员变量和方法

14.可以用 子类 extends 父类 来实现继承,子类也称为派生类,父类也称为超类,基类。子类具有父类非private的属性和方法,即子类不能直接使用父类private的内容。而且Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类。
另外,子类在调用构造方法时会默认先使用super()调用父类的无参构造方法,可以使用super(父类构造方法的参数)来调用父类的有参构造方法,此时就不会自动调用父类的无参构造。
当子类覆盖了父类的方法时,super.父类的方法名 也可以调用父类的方法

15.final关键字的基本用法:
1.修饰类:当用final修饰一个类时,表明这个类不能被继承。
2.修饰方法:类中的 final 方法可以被子类继承,但是不能被子类修改
3.修饰变量:对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

16.抽象类,在Java语言中使用abstract class 来定义抽象类,抽象类不能产生实例化对象,因此抽象类必须被继承,才能被使用。
abstract关键字可以用来声明抽象方法,抽象方法没有定义,方法名后面直接跟一个分号,含有抽象方法的类必须声明为抽象类。子类必须重写父类的全部抽象方法,或者声明自身为抽象类

17.接口,在java语言中使用interface来定义接口,接口不能产生实例化对象,必须被继承才能使用,使用implements关键字继承接口,而且除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。而且类中的非方法成员必须声明为static final类型,方法均为抽象方法。
implements关键字使一个类可以继承多个接口

18.parseInt(String)就是把String类型转化为int类型,ValueOf(数据类型)方法比如说 Integer.valueOf(String)是把String类型转化为Integer类型,而String.valueOf(基本数据类型)能把基本数据类型转为String类型

19.所有类都继承Object类,而且一般都要重写Object类中的部分方法,String toString()和boolean equals(Object obj)。
String toString在System.out.println(对象名)时自动调用并输出
boolean equals(Object obj)用于对象比较,因为==判断的是对象的地址而不是值本身,因此需要重写equals方法以实现值的比较,而且因为传入的是Object对象,因此在进行值比较时往往需要先使用instanceof关键字判断是不是同一类,再逐个成员进行比较

20.java中一些常见的系统包:
java.lang:包含了String,Object,Integer等类。
java.lang.reflect:反射开发包
java.util:java的工具包,提供了大量的工具类,像链表
java.util.regex:正则工具包
java.text:国际化处理程序包
java.io:进行输入输出处理以及文件操作
java.net:网络编程开发包
java.sql:数据库程序开发包
java.applet:Applet程序开发包,目前已经不再使用。
Applet是java在网页上嵌套的程序,采用绘图的方式完成的显示。而Application 是在主方法上运行,通过命令行执行。随着时间的发展,Applet程序已经不再使用。(使用Canvas绘图–HTML5)
java.awt javax.swing

查看评论

新手如何学习java(java学习建议路线图)

新手如何学习java(java学习建议路线图)
  • javaniuniu
  • javaniuniu
  • 2016-07-07 14:34:45
  • 4966

JAVA 学习顺序

JAVA 学习顺序
  • javaniuniu
  • javaniuniu
  • 2016-11-28 14:55:52
  • 3350

JAVA学习方向总结

今天在威哥公众号看到一篇关于Java学习体系的总结,在这里给大家分享一下:一、Java SE部分 java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API; java界面编程:AWT...
  • Ericpengjun
  • Ericpengjun
  • 2016-07-21 10:12:09
  • 2093

java深入学习(一)

为什么接口要规定成员变量必须是public static final的呢? 答: 首先接口是一种高度抽象的”模版”,,而接口中的属性也就是’模版’的成员,就应当是所有实现”模版”的实现类的共有特性...
  • Luxia_24
  • Luxia_24
  • 2015-09-09 15:34:13
  • 1615

学习java的感悟和总结

学习java也有两年的时间了,刚接触java,首先学习java的基本语法、常见API、java IO和多线程,后来在实际写项目的时候发现java本是很简单的一门语言,但是还要熟悉其他的知识。接着在盲目...
  • Bamboo_Dong
  • Bamboo_Dong
  • 2015-07-26 11:40:42
  • 3041

java 数组的学习

java数组
  • u010127154
  • u010127154
  • 2016-09-11 12:34:18
  • 296

2016最新Java学习计划

  一、Java学习路线图   二、Java学习路线图——视频篇 六大阶段学完后目标知识点配套免费资源(视频+笔记+源码+模板)密码       第一阶段Java基础 入门学习周期:35天学完后目标:...
  • qq_25827845
  • qq_25827845
  • 2016-11-08 21:29:17
  • 16610

【知识收藏】:Java整体学习路线(完整知识体系)

Java学习路线图~~~       在网上找到了几篇Java学习路线图,看了下总结得非常好,但唯一不好就是不怎么清晰,所以将其改造一下,方便以后学习时弥补自身所欠缺的知识点,也算是给自己一个明确的学...
  • fengwei4618
  • fengwei4618
  • 2017-08-28 00:38:59
  • 480

java学习资料免费下载(持续更新ing)

持续更新java相关学习资料,供大家免费下载。主要是相关书籍,资料大部分来源于网络,本人仅收集整理,如有侵权,请联系我删除。 By zxiaofan.com 资料目录:http://blog....
  • u010887744
  • u010887744
  • 2017-01-25 19:41:41
  • 7965

史上最完整Java学习路线图

  • 2014年11月13日 14:44
  • 223KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 1269
    积分: 281
    排名: 29万+