精华内容
下载资源
问答
  • 对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态...对象的显式创建方式4 。 1. 使用 new 关键字创建对象 这是常用的创建对象的方法,语法格式如下: 类名 对象名=new 类名(); 2. 调用 java....

    对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建隐含创建两种情况。
    显式创建对象
    对象的显式创建方式有 4 种。
    1. 使用 new 关键字创建对象
    这是常用的创建对象的方法,语法格式如下:
    类名 对象名=new 类名();
    2. 调用 java.lang.Class 或者 java.lang.reflect.Constuctor 类的 newlnstance() 实例方法
    在 Java 中,可以使用 java.lang.Class 或者 java.lang.reflect.Constuctor 类的 newlnstance() 实例方法来创建对象,代码格式如下:
    java.lang.Class Class 类对象名称=java.lang.Class.forName(要实例化的类全称);
    类名 对象名=(类名)Class类对象名称.newInstance();

    调用 java.lang.Class 类中的 forName() 方法时,需要将要实例化的类的全称(比如 com.mxl.package.Student)作为参数传递过去,然后再调用 java.lang.Class 类对象的 newInstance() 方法创建对象。
    3. 调用对象的 clone() 方法
    该方法不常用,使用该方法创建对象时,要实例化的类必须继承 java.lang.Cloneable 接口。 调用对象的 clone() 方法创建对象的语法格式如下:
    类名对象名=(类名)已创建好的类对象名.clone();

    4. 调用 java.io.ObjectlnputStream 对象的 readObject() 方法
    例 1
    下面创建一个示例演示常用的前三种对象创建方法。示例代码如下:

    public class Student implements Cloneable
    {   
        //实现 Cloneable 接口
        private String Name;    //学生名字
        private int age;    //学生年龄
        public Student(String name,int age)
        {    //构造方法
            this.Name=name;
            this.age=age;
        }
        public Student()
        {
            this.Name="name";
            this.age=0;
        }
        public String toString()
        {
            return"学生名字:"+Name+",年龄:"+age;
        }
        public static void main(String[] args)throws Exception
        {
            System.out.println("---------使用 new 关键字创建对象---------");
           
            //使用new关键字创建对象
            Student student1=new Student("小刘",22);
            System.out.println(student1);
            System.out.println("-----------调用 java.lang.Class 的 newInstance() 方法创建对象-----------");
           
            //调用 java.lang.Class 的 newInstance() 方法创建对象
            Class cl=Class.forName("Student");
            Student student2=(Student)cl.newInstance();
            System.out.println(student2);
            System.out.println("-------------------调用对象的 clone() 方法创建对象----------");
            //调用对象的 clone() 方法创建对象
            Student student3=(Student)student2.clone();
            System.out.println(student3);
        }
    }
    
    

    对上述示例的说明如下:
    使用 new 关键字或 Class 对象的 newInstance() 方法创建对象时,都会调用类的掏造方法。
    使用 Class 类的 newInstance() 方法创建对象时,会调用类的默认构造方法,即无参构造方法。
    使用 Object 类的 clone() 方法创建对象时,不会调用类的构造方法,它会创建一个复制的对象,这个对象和原来的对象具有不同的内存地址,但它们的属性值相同。
    如果类没有实现 Cloneable 接口,则 clone。方法会抛出 java.lang.CloneNotSupportedException 异常,所以应该让类实现 Cloneable 接口。

    程序执行结果如下:

    ---------使用 new 关键字创建对象---------
    学生名字:小刘,年龄:22
    -----------调用 java.lang.Class 的 newInstance() 方法创建对象-----------
    学生名字:name,年龄:0
    -------------------调用对象的done()方法创建对象----------
    学生名字:name,年龄:0
    

    隐含创建对象
    除了显式创建对象以外,在 Java 程序中还可以隐含地创建对象,例如下面几种情况。
    ①String strName=“strValue”,其中的“strValue”就是一个 String 对象,由 Java 虚拟机隐含地创建。
    ②字符串的“+”运算符运算的结果为一个新的 String 对象,示例如下:
    String str1=“Hello”;
    String str2=“Java”;
    String str3=str1+str2; //str3引用一个新的String对象
    ③当 Java 虚拟机加载一个类时,会隐含地创建描述这个类的 Class 实例。

    **提示:**类的加载是指把类的 .class 文件中的二进制数据读入内存中,把它存放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。

    无论釆用哪种方式创建对象Java 虚拟机在创建一个对象时都包含以下步骤:

    1. 给对象分配内存。
    2. 将对象的实例变量自动初始化为其变量类型的默认值。
    3. 初始化对象,给实例变量赋予正确的初始值。

    **注意:**每个对象都是相互独立的,在内存中占有独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成了垃圾,由 Java 虚拟机自带的垃圾回收机制处理。

    展开全文
  • 创建实例对象的四种方式

    千次阅读 2018-12-29 16:06:03
    clone方法创建对象并不会调用任何构造函数。 要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。 public class Animal implements Cloneable{ private int age; private String ...
    1. new对象的方式创建对象
    public class Animal {	
    		private int age;
    		private String name;
    		public void animal(){}
    		public void animal(String call){
    			System.out.println("动物叫");
    		}
    		
    		}
    
    
    public class Cat  extends Animal{
    		public Cat() {
    		}
    		public void cat(){
    			System.out.println("miao");
    		}
    		@Override
    			public void animal() {
    			}
    			@Override
    			public void animal(String call) {
    				System.out.println("喵");
    			}
    		}
    
    public class Test {
    	public static void test(Animal a) {
    		a.animal("dong");
    	}
    	public static void main(String[] args) {
    		Animal a = new Animal();
    		test(a);
    		Cat c = new Cat();
    		test(c);
    	}
    	private static void test(Cat cat) {
    		cat.animal("duing");
    		cat.cat();
    	}
    }
    
    1. 通过class的反射机制创建对象(适用于有无参构造方法的类)

    在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    反射机制可以从.class反编译到.java,每一个class都是一个class的对象

    public static void main(String[] args) {
    		Animal a = new Animal();
    		Cat c = new Cat();
    		//方式1:对象.getClass获取类的字节码文件
    		Class class1 = a.getClass();
    		System.out.println(class1.getName());//返回Animal类的字节码文件
    		Class class2 = c.getClass();
    		System.out.println(class2.getName());//返回Cat类的字节码文件
    		//方式2:类.getClass获取类的字节码文件
    		Class class3 = Animal.class;
    		System.out.println(class3.getName());
    		//方式3:forName():传入时只需要以字符串的方式传入即可
    		//通过Class类的一个forName(String className)静态方法返回一个Class对象,className必须是全路径名称;
    		//Class.forName()有异常要try catch:ClassNotFoundException
    		Class class4 = null;
    		try {
    			class4 = Class.forName("t.Animal");
    			System. out.println(class4.getName());
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    	    //方法3.5:创建此Class对象所表示类的一个新实例,
    		//newInstance方法调用的是Person的空参数构造方法
    		//newInstance()方法 ---> 获取class类型之后,可以创建该类型的对象
    		Class class5 = null;
    		try {
    			class5 = Class.forName("t.Animal");
    			Object o = class5.newInstance();
    			System. out.println(class5.toString());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    

    3.利用序列化和反序列化创建对象

    当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。
    为了反序列化一个对象,我们需要让我们的类实现Serializable接口

    public class MyTest {
    public class ObjectTest implements Serializable {

    	public void main(String[] args) {
    		ObjectTest object1 = new ObjectTest();
    		ObjectOutputStream objectStream;
    		try {
    			objectStream = new ObjectOutputStream(new FileOutputStream("G:\1\1.txt"));
    			objectStream.writeObject(object1);
    			
    			ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("G:\1\1.txt"));
    			ObjectTest objcet2 = (ObjectTest) objectInputStream.readObject();
    			System.out.println(objcet2.toString());
    		} catch (Exception e) {
    			e.printStackTrace();
    	}
    }
    

    }
    }
    4.通过克隆的方式创建对象

    ① 实现Cloneable接口,这是一个标记接口,自身没有方法。
    ② 覆盖clone()方法,可见性提升为public。

    我们调用一个对象的clone方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。

    要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。

    public class Animal  implements Cloneable{	
    		private int age;
    		private String name;
    		public void animal(){}
    		public void animal(String call){
    			System.out.println("动物叫");
    		}
    		@Override
    		protected Object clone() throws CloneNotSupportedException {
    			Object obj = null;
                try {
                    obj = super.clone();
                } catch (CloneNotSupportedException e) {
                    e.printStackTrace();
                }
                return obj;
    		}
    		
    		}
    
    
            Animal a2 = (Animal) a.clone();
    		a2.animal("dio");
    		System.out.println(a2+",hashcode:"+a2.hashCode());
    
    展开全文
  • Linux下创建快捷方式的几种方法

    千次阅读 2018-08-07 10:48:27
    记录一下Linux在桌面创建快捷方式的几种方式 以便以后记忆和使用 有新的方法还会更新到这 我的简书博客地址 特别注意: 使用的系统版本是 Linux Unbuntu 14.04 目录 将解压后的文件中的.sh 做成快捷方式放...

    今日推荐

    引言

    记录一下Linux在桌面创建快捷方式的几种方式 以便以后记忆和使用 有新的方法还会更新到这

    我的简书博客地址

    特别注意: 使用的系统版本是 Linux Unbuntu 14.04

    目录

    1. 将解压后的文件中的.sh 做成快捷方式放到桌面上

    2. 将已有的可执行文件创建软链接放到桌面上

    一:将解压后的文件中的.sh 做成快捷方式放到桌面上

    ctrl + alt + t 进入命令行

    1. cd 到桌面的目录
      cd /home/sensetime/Desktop

    2.创建 .desktop的文件
    touch filename.desktop

    3.编辑文件
    gedit filename.desktop

    [Desktop Entry]
    Encoding=UTF-8
    Name=SmartGit //快捷方式的名称
    Exec=sh /home/sensetime/Downloads/smartgit/bin/smartgit.sh //你的.sh的完整路径(*前面的sh不能删)
    Icon=/home/sensetime/Downloads/smartgit/bin/smartgit-64.png//你的快捷方式图片的路径
    Info="Spark"
    Terminal=false
    Type=Application
    StartupNotify=true
    

    修改完之后保存退出

    4.修改改文件的属性-权限
    到桌面上找到刚才创建的文件,右键 - 属性 - 权限 - 允许作为程序执行文件

    修改属性权限

    这样就OK了 看一下桌面上已经有了这个快捷方式
    快捷方式

    二:将已有的可执行文件创建软链接放到桌面上

    这种情况是在安装的软件文件夹里面已经有了可执行文件比如说:
    已有可执行文件

    我们将这个可执行文件生成软链接(相当于Windows的快捷方式)放到桌面即可

    这里用到一个Linux的命令 生成软链接
    ln -s 源文件 目标文件

    ctrl + alt + t打开命令行

    生成软链接

    image.png

    生成了!!

    后续还有其他方式会同步到这, 如果你们有其他方式可以留言~~~

    展开全文
  • eclipse创建springboot项目的三种方法

    万次阅读 多人点赞 2018-07-30 15:27:53
    方法一 安装STS插件 安装插件导向窗口完成后,在eclipse右下角将会出现安装插件的进度,等插件安装完成后重启eclipse生效 ...4.编写项目组和名称-finish即可 5.修改pom.xml文件 <!-- ...

    方法一

    安装STS插件

    安装插件导向窗口完成后,在eclipse右下角将会出现安装插件的进度,等插件安装完成后重启eclipse生效

     

    新建spring boot项目

     

    项目启动

     

    方法二

    1.创建Maven项目

    2.选择项目类型

    3.选择项目

    4.编写项目组和名称-finish即可

    5.修改pom.xml文件

    <!-- spring boot基本环境 -->

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.0.2.RELEASE</version>

    </parent>

    6.pom.xml中添加依赖

    <!--web应用基本环境配置 -->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    7.pom.xml中添加编译插件

    <build>

        <plugins>

        <!-- spring-boot-maven-plugin插件就是打包spring boot应用的 -->

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins

    </build>

    8.基础包和类

     

    9.创建resources文件夹和application.properties文件

    10.App.java

    package com.springboot.springbootDemo;

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication

    public class App

    {

        public static void main( String[] args )

        {

            SpringApplication.run(App.class, args);

        }

    }

     

    11.HelloController.java

    package com.springboot.springbootDemo.controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RestController;

    @RestController

    @RequestMapping("hello2")

    public class HelloController {

           @RequestMapping("")

           public String hello() {

                  return "helloworld2";

           }

    }

    12.启动项目

    13.访问项目(低版本可能无法访问,2版本可用)

    http://localhost:8012/hello2

     

    方法三

    访问http://start.spring.io/

    点击Generate Project下载项目压缩包

    解压后,使用eclipse,Import -> Existing Maven Projects -> Next ->选择解压后的文件夹-> Finsh,OK done!

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 创建线程的四种方式(二)

    万次阅读 2020-01-27 21:58:10
    上篇文章说了前三种方式,下面来说最后一: 线程池方式创建线程: 为什么要线程池: 如果并发量很多,并且每个线程都是执行时间很短就结束了,频繁的创建和销毁线程是非常消耗时间的。所以出现了线程池. 线程池: ...
  • Python Pandas 创建 DataFrame 的四种方法

    千次阅读 2020-05-15 20:29:12
    Pandas 是 Python 的一个数据分析包,最初由 AQR Capital Management 于2008年4月开发,并于2009年底开源出来,目前由专注于 Python 数据包开发的 PyData 开发团队继续开发和维护,属于 PyData 项目的一部分。...
  • Spring:创建Bean的几种方式

    万次阅读 多人点赞 2016-06-04 17:42:21
    Spring创建工厂的三种方式
  • 一、创建数据库简介 数据库是储存关键资料的文件系统,...二、4种主流数据库创建方式 2.1 MySQL创建数据库 MySQL中创建数据库的基础英语的语法文件格式以下。 CREATE DATABASE db_name; 在其中“db_name”
  • Spring中创建对象的四种方式

    千次阅读 2019-01-17 22:24:36
    1、通过调用无参构造方法  1.1 默认情况,不需要使用任何配置 2、调用有参数构造方法  2.1 在类中生成有参构造方法  2.2 &lt;constuctor-arg/&gt; 配置构造方法参数  2.3 type 参数类型  2.4 ...
  • C#中创建线程的四种方式

    万次阅读 2018-10-25 21:33:52
    种创建线程的方式, 给线程传递参数 的方法,和 获得结果的方法 都不一样 利用委托开启线程 步骤 将一个方法赋给委托变量 变量调用BeginInvoke()方法 即可开启一个线程执行该方法 Func, int,int >...
  • docker创建镜像的三种方法

    千次阅读 2020-08-17 08:50:05
    创建docker镜像的三种方法,分别是基于已有的容器创建、基于本地模板创建、以及dockerfile创建。 1.基于以有容器创建镜像。 基于已有的容器创建主要是使用docker commit命令。实质就是把一个容器里面运行的程序以及...
  • 动态创建组件 说说场景先,比我写了一些组件,这此组件内容都很少,弹出的对话框也许只有一行数据,也有可能是一个表单等,或都一些多选的,单选的选项等。...之前写过C#动态创建类,都是给一个类的名称
  • 创建数组的几种方式

    千次阅读 2020-08-03 23:46:07
    创建数组的几种方式 数组创建有两格式分别为: 1.动态初始化(指定长度):在创建数组时,直接指定数组中元素的个数。 格式:数据类型[ ] 数组名称 = new 数据类型[ 数组长度] public static void main(String[] ...
  • Spring创建bean的三种方式

    万次阅读 2018-06-20 13:26:03
    关于Spring创建bean的三种方式,可以支持用户自定义工厂方法。链接:https://blog.csdn.net/magicianjun/article/details/78737840原文如下:Spring支持如下三种方式创建Bean1:调用构造器创建Bean2:调用静态工厂...
  • Python创建多线程的三种方法

    千次阅读 2019-05-30 12:05:02
    Python创建多线程的三种方法thread模块函数式创建线程继承threading类创建多线程threading模块函数式创建线程使用总结 thread模块函数式创建线程 调用thread模块中的start_new_thread()函数来产生新线程。语法如下: ...
  • 一维数组创建的几种方法

    千次阅读 2018-04-07 22:14:10
    数组可以说是对于每语言学习中的最基础的数据结构之一,...这部分来说俩声明方式的效果是相同的,但是推荐首选第一种方法来声明,因为第一种方法更加直观,更具有可读性,可以通过声明看出是一引用类型,而...
  • 创建petalinux工程的两种方法

    千次阅读 2017-08-25 21:36:08
    PetaLinux建立工程的两种方法,第一种方法是基于BSP建立工程,第二种方法创建一个自定义工程。 本文全部参考自:http://blog.csdn.net/u013793399/article/details/53054734 去除了搞笑部分,经实际验证后撰写...
  • // /====创建精灵的四种方法 CCSprite * spr1 = CCSprite::create("Icon.png"); spr1->setPosition(ccp(70, 150)); this->addChild(spr1); // 参数 图片名称 矩形区域 ...
  • IDEA 创建 SpringBoot 项目的两种方法

    千次阅读 2019-02-12 17:26:24
    使用 Maven 新建 SpringBoot 项目 1、选择jdk版本,通过 Maven 新建项目 ...4、初始创建的项目结构 使用 Spring Initializr 新建 SpringBoot 项目 1、选择jdk版本,通过 Spring Initializr ...
  • 基于pyspark创建DataFrame的几种方法

    千次阅读 2020-03-17 12:59:49
    基于pyspark创建DataFrame的几种方法pyspark创建DataFrameRDD和DataFrame使用二元组创建DataFrame使用键值对创建DataFrame使用rdd创建DataFrame基于rdd和ROW创建DataFrame基于rdd和StructType创建DataFrame基于...
  • Intellij 创建spark项目的两种方式

    万次阅读 2018-03-06 11:53:20
    可以非常轻松查看scala源码,当然它来开发Java也是很爽的,之前一直在scala ide和eclipse,现在换成intellij简直好用到飞起,但是有些人不知道怎么intellij去创建一个spark项目,这里介绍两 选择File-&...
  • 创建自定义 gradle 插件的三种方法

    千次阅读 2021-01-30 16:19:32
    创建自定义 gradle 插件的三种方法创建 Gradle 插件,我们需要编写一个实现 Plugin 接口的类。将插件应用于项目时,Gradle 将创建插件类的实例,并调用该实例的 Plugin.apply()方法。项目对象作为参数传递,...
  • 通常每一个任务称为一个线程,与进程相比,线程更“轻量级”,创建、撤销一个线程比启动一个新进程开销要小得多。没有进程就没有线程,进程一旦终止,其内的线程也将不复存在 多进程与多线程的区别:本质区别在于,...
  • MySQL创建用户的三种方法

    万次阅读 2016-04-26 16:38:08
    前言:mysql创建用户的方法分成三:INSERT USER表的方法、CREATE USER的方法、GRANT的方法。 一、账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名,跟其他的数据库不一样) 用户名...
  • 详解 Java 创建线程的三种方式

    千次阅读 2021-01-18 16:02:50
    java中创建线程的方式主要有三: 继承Thread类创建线程 实现Runnable接口创建线程 使用Callable和Future创建线程 1. 通过继承Thread类创建线程 定义Thread类的子类,并重写该类的run方法,该run方法方法体就...
  • Java多线程-四种线程池创建方式

    千次阅读 2020-01-15 20:35:21
    1、减少线程的频繁创建、销毁。 2、可有效的使用和管理线程,提升资源重复使用率,避免资源不足引起的一些问题。 二)newFixedThreadPool 原理:创建一个固定数量大小的线程池,当线程任务数超过固定大小时,未...
  • 创建一个定长线程池,支持定时及周期性任务执行。 延时执行 private static void scheduledThreadPool01(){ ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); ...
  • SQLite创建和打开数据库的三种方式 我们发现,在Android中使用SQLite数据库的时候,创建和打开数据库的时候不止继承SQLiteOpenHelper 这一种方式。目前我至少发现了三种方式: 1.自定义一个类继承...
  • Qt4创建工程的几种方法:linux系统

    千次阅读 2013-06-21 16:43:31
    方法一:以Qt Creator 作为IDE 1、启动Qt Creator,并创建一个空项目 2、输入路径和工程名字 3、添加cpp文件 4、添加代码,并且编译执行 5、执行结果 方法二:利用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,532,567
精华内容 613,026
关键字:

创建名称经常用的四种方法