java基础(一)
来源:互联网 发布:mac怎么下载dota2 编辑:程序博客网 时间:2024/06/07 04:05
类与对象
类是一类物体的抽象,它只是在定义,不是具体的东西,对象才是具体的东西
public class student{
//定义一个int类型的字段
int age = 18;
}
public class test{
public student void main(String[] args){
student fl = new studrnt();
System.out.println(zs.age);
}
}
类
一、一个类里面包含两个方面:
1、属性:字段(访问修饰符 数据类型 变量名称 = 初始值)
1)、两个修饰符:public(公共的) private(私有的)
2、功能:方法
1)、方法
public void student( ){ ................... }
访问修饰符 返回值 方法名(参数类型 参数名,参数类型 参数名){方法体}
访问修饰符:控制方法的访问范围
返回值:这个方法的结果
方法名:调用方法用的名字
参数列表:调用方法的者给这个方法传递的参数,可以多个
方法体:具体这个方法实现的功能
对象
对象是一个具体的东西
一、创建对象
Student s = new Student();//创建一个叫sr的学生对象
1)s:保存在栈空间中
2)new Student():保存在堆空间中
3).=;起子指向的作用
4)如果建了一个无用的对象时,java中的垃圾回收机制会去处理掉这个无用对象,不用我们去处理
堆栈
栈:内存小,速度快
堆:内存大,速度慢
速度不同的原因,是因为堆和栈内部结构的原因,栈空间的储存结构固定,只能保存比较简单的数据,堆空间不固定,可以保存各种各样的数据,这就是速度不同的原因
无参构造函数
一、构造方法:构造对象时用于new后面的方法
假如没有给类定义构造函数,就表示有一个默认的构造函数--无参构造,方法体中没有代码
构造方法与变通方法的区别:没有具体写明返回值,因为他肯定返回的是这个类的对象
创建对象时,类中代码执行的顺序
1、static最早的(static代码块,static变量,块和变量执行顺序就是从上到下进行书定的)
2、变通变量(同时还包含了变通代码块,块和变量的执行顺序就是从上到下进行书写的)
3、最后才是构造函数
static
1.static 的变量和代码块,只执行一次,这个类第一次被执行(或者说,是这个字节码数据加载到虚拟机中时,创建的变量和执行静态的代码块)
2.变通变量可以面向所有对象 ,静态变量只能一个对象,因为它只有一个对象,所以属于这个类的对象
3.静态方法,不需要使用对象来调用,因为静态方法和静态属性一样,是属于类的,不属于具体某个对象
数据类类型
一、基础数据类型:8种
char:字符类型
boolean:真假类型,true, false
byte:一个字节,整数
shout:两个字节,整数
int:四个字节,整数
long:八个字节,整数
flaot:四个字节,小数
double:八个字节,小数
保存方式:由于基础数据类型结构简单,所以保存在栈中
二、复杂数据类型
除去基础数据类型个,其他都 是复杂数据类型
最大值和最小值
byte是一个字节,一个字节有八位,由八个01组成,有256种表示方法,由于第一位表示符号,所以表示值得是后面7位,又因为0是自然数 ,那么这个值的范围是-128到127
值传递和引用传递
基础数据类型是值传递,复杂数据类型是引用传递
String是不可变字符串,所以传递后,去修改,不能修改到原来的字符串对象,如果一定要修改字符串,可以用StringBuffer代替
方法的重载
在一个类中,方法名相同,参数列表不同(不是变量名不同而是变量类型不同),返回值 类型跟重载没有关系
public int suanjiafa(int a,int b)
{
return a+b;
}
public int suanjiafa(int a,int b,int c){
return a+b+c;
}
万物接对象,对象是(object)
有和是
在做面向对象,使用对象功能时,要知道对象从何而不,如果是创建而来,就是“有”的意思,如果是自己有这个功能 ,那就是“是”的意思
单根继承
一个类只能继承一个类,不能多继承
父类也叫超类,所以相关的关键字是super,父类也叫基类
构造函数顺序
创建子类对象前行要创建一个父类对象
if和if....else
最基本的条件语句是if
if(a>0)
{
System.exit(-1);
}
if(a<0)
{
System.exit(2);
}else{
System.exit(1);
}
switch
在用这种语句时,每个case下都要有一个break,在结尾必须要有一个default分支 语句。
char grade = 'D'
switch(grade){
case 'A';
System.out.println("Great job!");
break;
case 'B';
System.out.println("Great job!");
break;
default;
System.out.println("wqh");
如果两个case写在一起,说明这两个选择同一种分支。
for与foreach
for循环用于重复执行语句,直到条件得到满足
for(初始化;结束条件;迭代条件 ){
}
fforeach循环是基于迭代器的
for(String zf : sz){
System.out.println(zf);
}
while和do循环
while循环
int i = 0;
int [] sz = {123,42,59,88};
while(sz[i]>99)
{
System.out.println(sz[i]);
i++;
}
do while循环
int i = 0;
int[] sz = {25,69,97,108};
do
{
System.out.println(sz[i]);
i++;
}
wile(i<5 && sz[i]> 68);
wile和 do wile的不同:wile的位置一个在循环体前,一个在循环体后,wile是先判断后执行,do wile是执行后判断
数组和集合的差别
数组在创建时,必须指定大小或者直接把所有数据都 放进去,而集合可以随便向里面加数据
String[] sz1 = {"a","b"};
for (String string : sz1) {
System.out.println(string);
}
int[] sz2 = new int[2];
for (int i : sz2) {
System.out.println(i);
}
boolean[] sz3 = new boolean[2];
for (boolean b : sz3) {
System.out.println(b);
}
System.out.println(c);
}
ArrayList,Vector,LinkedList
ArrayList jhl = new ArrayList();
jhl.add("111");
jhl.add("22");
jhl.add("333");
for(int i = 0;i<jhl.sete();i++){
System.out.println(jhl.get(i));
}
ArrayLis 和Vector是基于数组的集合,LinkedList是基于链表结构的集合
基于数组的查询快,基于链表结构的修改,删除,新增快
ArrayList和Vector的差别,线程是否安全的差别
map
map是基于键值对保存数据的(键 -- 值)
通过键可以找到对应的值
如果往里面加键相同的键值对,会把前面的覆盖
set和list的差别
sel是个无序的不可重复的集合
包
其实包就是一个存放class的文件夹,把功能类似的放在一起。
接口
接口不可以创建对象,只可以定义规则和标准,他的方法都是没有实现的(没有方法体)
public interface Dianqi{
public abstract void kai();
public abstract void guan();
}
public class Diannao implements Dianqi{
public void kai(){
Sytstem.out.println("按一下开机键")
}
public void kai(){
Sytstem.out.println("按一下开机键")
}
在编程时,让一个普通类的implements(实现)一个接口,需要实现它所有的方法。
为什么接口不能创建对象,就是要调就这个对象的方法,但是接口的立法都 是没有实现的,创建 这样的对象是没有意义的。如果真正的要创建这个类的对象,可以通过匿名类(抽象类)的方式,new接口对象,在这个接口下面我们马上把他的功能给实现了
普通类是实现了所有方法,接口是什么方法都没有实现的,一般方法末实现都认为方法加了一个abstract修饰,由于接口什么方法都没有实现,所以就去掉了这个关键字
实质上就是文件夹,用于存放class文件的,功能类似的放在一起。
普通类,抽象类,接口类
可以定义普通类继承于普通类,
可以定义普通类继承于抽象类
可以定义普通类实现与接口类。
抽象类可以继承抽象类
public class Mao extends Buru{
@Override
public void buru() {
System.out.println("mao buru");
}
}
接口可以继承与接口
public interface Jiayongdianqi extends Dianqi{
public void yaokong();
}
抽象类也可以继承与接口
子类在继承时,在继承普通类,就是获取父类的功能,继承抽象类就是获取了部分功能 ,把父类末实现的功能给实现,在实现接口类时,遵循接口所定义的标准,把接口所有的方法给实现了
重定
就是在调用方法时,调用父亲的对象时,父亲有这个方法,而自己也有这个方法,这就形成了重写
关于父类引用指向子类实体
Ren ren = new Student();
ren是父类的引用
new Stuent();是子类的实体
Dongwu dw;
Random r = new Random();
int i = r.nextInt(2);
if(i ==0)
{
dw = new Mao();
}else {
dw = new Dog();
}
dw.jiao();
}
}
ren对象只能调用Ren这个类方法,尽管我们知道ren这个引用真正指向的是一个Student对象。
强制转换
//强制转换
dw.jiao();
System.out.println(dw == wangcai);
Ren ren = new Student();
}
}
- 【Java基础 一】---基础语法
- Java Socket基础(一)
- Java异常基础一
- Java语言基础(一)
- java基础(一)
- java基础笔记(一)
- Java基础(一)
- Java语言基础(一)
- Java虚拟机基础一
- JAVA线程基础(一)
- Java基础回顾(一)
- Java基础增加 一
- java基础学习一
- java基础(一)
- java基础一
- java基础(一)
- java基础学习(一)
- java基础加强(一)
- [DP] Codeforces #626F. Group Projects
- linux centos下mysql的安装
- MApp
- Volley重复请求的问题
- javascript正则表达式 (初整理)
- java基础(一)
- vim 配置文件
- MapReduce--7--求共同好友--改进版JobControl
- Java小项目:图片版坦克大战
- 【框架】—MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- jq 删除节点
- Java【SpringBoot实战—微信点餐系统学习总结】
- VS2008宏定义的查看方法
- 解析网络上的json和图片的工具