1、面向过程思想,强调的是过程(即动作,函数);面向对象思想,强调的是对象。


2、类与对象关系:类是对事物的描述(属性和行为-方法),对象是类的实例。对象通过new生成。属性也称成员变量;方法也称成员函数。

 /*Java代码都是在类中的,以下是Java的两种不同类:区别在于是否有main方法。
* 有main函数的可以独立运行,且main函数是程序的入口
* 如果没有main函数,就像其他面向对象的语言一样,通过new一个实例来运行
*/ public class Object{
public static void main(String[] args){
Car c=new Car();
setColor(c,"red");
c.run();
/*0、Java中,如果一个对象只是为了执行 一个方法(而非访问变量) 一次,可以使用匿名对象
* 匿名对象的特点是,在创建对象时可以执行 一次操作 ,之后就不能找到该对象,所以不能继续对其操作
* 由于只能进行一次操作,所以只能执行方法,如果是操作成员变量,只能设置值或夺取默认值(无意义)
* 这也是对这种用法的一种简化操作
*/
new Car().run();
}
//1、有了对象,就有了一种新类型的参数:类类型,就是以类名为一种类型的参数,这种类型就是传入该类的一个实例进行操作
public static void setColor(Car c,String color){
c.color=color;
}
}
class Car{
//2、成员变量和下面的局部变量名字相同,但指向不同,所以值也不同
//3、成员变量有初始值,如果没有显式设置,则使用默认值;成员变量也可以在实例化对象后用 对象.变量来访问和修改。
int tyrenum=4;
String color;
void run(){
int tyrenum=10;
//4、this是在实例化对象时产生的变量,保存着当前对象,用于访问对象中的成员变量和成员方法
System.out.println(this.tyrenum+"..."+color+"..."+tyrenum);
}
}

Java对象

3、对象的第一个特点就是封装:封装就是将一个类所需的变量和方法集中到一起,然后加上权限和相应的访问途径

小知识:main函数详解

 public class ObjectPerson {
public static void main(String[] args){
Person p=new Person("asd",10);
/*下面的操作是直接访问成员变量,如果是普通数据则没有问题,但是如果是重要数据且有存储/访问要求时
* 例如年龄的值需要>0&&<130时就不能控制,此时就需要权限控制
*/
//ming.age=10;
p.speak();
Person p1=new Person();
p1.speak();
/*下面打印main函数的参数,返回[Ljava.lang.String;@15db9742
* 可以直到是一个字符串数组类型实体,并且检测长度为0,这是由用户输入参数的入口,在编译时可以传入,这里没有传入所以为0
* 那为什么是字符串数组类型,因为字符串是使用最广泛的的类型,其他所有类型在传输时都是先转换为字符串然后在转为原来类型,
*/
System.out.println(args+","+args.length);
}
} class Person{
//int age; 成员变量也称实例变量
private int age;
//编辑器中将鼠标放在属性名上,会弹出一个框,可以选择生成对应的set和get方法,及其位置
private String name;
/*1、类中除main以外另一个特殊的方法就是 类同名 方法,该方法在new一个新对象时自动执行
* 称为 构造函数 ,用于初始化一个对象,并进行一些操作,如赋值操作
* 如果没有显式设置构造函数,Java会设置一个空的构造函数进行使用。
*/
/*2、构造函数和一般函数的区别:
* 1、形式:构造函数没有返回值,不需要设置返回值类型,
* 2、调用:构造函数在创建对象时自动调用一次,
* 注意:一般函数也可以以类为名,只要有返回值类型就可以和构造函数区别,但是不要使用。
*/
/*3、Java是强类型语言,参数必须符合相应类型,否则不能调用。但是Java也提供了一种重载技术,即同名函数只要参数类型或个数不同
* 就认为是两个函数,在调用时根据参数来选择调用那个函数。所以说明:重载和强类型语言有关。
* 这对于构造函数也同样适用。即构造函数也可以重载。
*/
Person(){
setName("baby");
setAge(1);
}
Person(int age){
setAge(age);
}
Person(String name){
setName(name);
}
/*2、构造函数和一般函数的区别:
* 3、调用:创建完对象之后不能显式的调用构造函数(包括构造函数的重载函数),但是可以用this在构造函数中调用其他构造函数(的重载)
* 见下例,但是有要求:必须在构造函数的第一句执行(所以也只能有一个),因为其他重载的构造函数也是进行初始化,所以要首先进行
*/
Person(String name,int age){
this(name);
setAge(age);
}
/*4、构造代码块:从上面可以看到在Java中允许存在多个构造函数,针对不同的参数进行不同对象的初始化
* 这样方便了产生不同对象,但是如果对象有相同的部分需要初始化就很麻烦
* 此时就可以使用构造代码块,就是在类中定义一段代码块,不需要指定任何标示,
* 这个代码块就会在new一个对象时自动运行一次,类似构造函数,但是又不针对具体对象
* 注意:狗杂代码块先于构造函数执行
*/
public void speak(){
System.out.println("my name is "+this.name+",and i'm "+this.age+" old.");
}
//成员变量的最主要作用就是存储和读取,私有成员变量也是,但只能被 本类 中的方法访问。规范是使用set变量()和get变量()来存取
public void setAge(int age){
if(age>0&&age<130){
this.age=age;
}
}
public int getAge() {
return this.age;
}
/*为什么要使用this关键字:就是为了解决下面的局部变量(即参数name)和成员变量name重名的问题,
* 因为所有的函数都会在栈中执行,参数也就是局部变量,如果和成员变量同名,就会优先指向局部变量,
* 所以此时对变量的所有操作都会在函数结束后消失,和成员变量没有关系,为了解决这个问题,就用this来代替对象,
* 这样就和成员变量产生关系,操作就是对成员变量进行的。
* this是在创建对象时产生的,代替当前对象
*/
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void cry(){
System.out.println("wuwu...");
} }

Java封装、main函数

4、静态修饰符:

 public class ObjectStatic {
public static void main(String[] args){
//为了不把所有main函数调用的方法和数据变成static的变通方法,即用对象调用。
new ObjectStatic().show();
/*下面打印main函数的参数,返回[Ljava.lang.String;@15db9742
* 可以直到是一个字符串数组类型实体,并且检测长度为0,这是由用户输入参数的入口,在编译时可以传入,这里没有传入所以为0
* 那为什么是字符串数组类型,因为字符串是使用最广泛的的类型,其他所有类型在传输时都是先转换为字符串然后在转为原来类型,
*/
}
public void show(){
System.out.println("这个方法不是静态的,但是可以被静态的main函数内部调用,其实是对象调用的。");
} }
class Static{
/*static修饰静态成员变量和方法,这些方法是属于类的,而非对象。并且先于对象而存在,可以由类/对象调用。
* 静态成员的好处是在内存中只有一份,而多有对象都可以共享.
*/
static int head=1;
static String name;
static void cry(){
System.out.println("wuwuwu...");
}
/*静态代码块:像该类中,所有的成员都是静态的,所以不需要new对象来操作,可以直接用类来调用
* 但是有一个问题,就是不能进行初始化,因为需要构造函数,此时可以使用静态代码块来进行初始化
* 静态代码块是一个代码块,用static修饰,在类加载是加载并能直接运行(和构造函数相似,但不需要对象)
* 下面只是简单实例,实际并不是如此简单的操作(没有太大意义),只是了解有这样的操作
* !!!注意:static代码块只在类加载时执行,而类只需加载一次以后直接使用,所以static代码块只执行一次
*/
static {
name="asd";
}
}

static

小知识:

1、类加载流程:Java编译器会先将Java源代码编译为class文件然后执行,如果在一个类文件中引用另一个类,需要先在./classpath中寻找是否有对应的class文件,如果没有则检测是否有对应的源文件,有则编译并执行;还有就是引用系统类文件,使用import方法,会在jvm中进行编译。

2、Javadoc操作简介:Java提供Javadoc.exe程序来将一个类文档化。这需要使用/** */的注释格式,Java会将这种注释中的内容提取出来(只能是public权限的方法)。如果需要表现特殊内容,需要@开头(如@version)。需要注意:1是需要文档化的类必须为public或protected权限;2是所有方法的参数和返回值都需要进行解释。下附为javadoc的操作格式和命令(详叙见后):

Java学习笔记三的更多相关文章

  1. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  2. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  3. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  4. Java学习笔记三.2

    5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...

  5. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  6. Java学习笔记三---unable to launch

    环境配置好后,在eclipse下编写HelloWorld程序: ①创建新工程 ②创建.java文件,命名为HelloWorld ③在源文件中添加main方法,代码如下: public void mai ...

  7. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  8. Java学习笔记三:运算符

    1.算术运算符: GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/OperPrac01.java +  -  *  /  ...

  9. Java学习笔记三.3

    9.异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系.最顶端是Throwable,接着是Error,Exception,其中Exception又明显 ...

随机推荐

  1. Qt 5.3 下OpenCV 2.4.11 开发(0)图像处理基本概念

    1.普通情况下的RGB彩色图像:它的每一个像素点都是由三个通道组成,即红色(R).绿色(G)和蓝色(B).8位三通道彩色图像就是每一个像素中每一个通道的取值范围都是 0~255(即二进制下的8位数), ...

  2. Java中发送http的get、post请求

    近期做项目中,须要把消息通过中间件的形式通过http请求的方式推送给第三方,因此用到了http协议,小编花费了一个多小时.对于http协议中的post和get请求,封装了一个工具类.以下与大家分享一下 ...

  3. Android异步载入全解析之开篇瞎扯淡

    Android异步载入 概述 Android异步载入在Android中使用的很广泛,除了是由于避免在主线程中做网络操作.更是为了避免在显示时由于时间太长而造成ANR,添加显示的流畅性,特别是像List ...

  4. 关于Windows7下创建Cocos2D-X项目的小问题

    "新版的Cocos2D-X"已经不支持用上述脚本来创建工程了,而是改为用create-project.py来创建...命令格式: python create-project.py ...

  5. Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)

    本文介绍如何打包Qt程序,使其在没有安装Qt的系统可以运行. 默认前提:另外一个系统和本系统是同一个系统版本. 1,编写导出依赖包的脚本copylib.sh #!/bin/bash LibDir=$P ...

  6. acme.sh建立SAN证书 和泛域名证书

    文件来源 https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert domain=$domain time=`date +%Y%m%d% ...

  7. Design Pattern - Service Locator Pattern--转载

    原文地址:http://www.tutorialspoint.com/design_pattern/service_locator_pattern.htm The service locator de ...

  8. which---查找并显示给定命令的绝对路径

    which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就可 ...

  9. 在hive执行创建表的命令,遇到异常com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

    今天在练习hive的操作时,在创建数据表时,遇到了异常 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.ex ...

  10. oracle 查询某个时间段数据

    SELECT * FROM DRP_MARKET_PRODUCT T WHERE T.CREATEDTIME BETWEEN TO_DATE('2016-10-08 12:30', 'yyyy-mm- ...