java基础的详细了解第三天

 更新时间:2021年08月09日 16:48:47   作者:zsr6135  
这篇文章对Java编程语言的基础知识作了一个较为全面的汇总,在这里给大家分享一下。需要的朋友可以参考,希望能给你带来帮助

1、private实现封装处理

如果像想要知道封装,首先必须清楚如果没有封装会怎么样?

没有封装方法中的属性,在所有方法被调用后都可以进行无权限的访问。而当进行了封装操作之后,在实例化对象访问该方法的时候会出现无法访问的问题。

TestDemo1.java:11: 错误: name 在 Person 中是 private 访问控制
                per.name = "张三";
                   ^
TestDemo1.java:12: 错误: age 在 Person 中是 private 访问控制
                per.age = 13;
                   ^
2 个错误

解决该问题就需要通过getter、setter进行赋值、取值的操作。

class Person{
	private String name;
	private int age;
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public int getAge(){
		return age;
	}
	public void info(){
		System.out.println("name = "+ name +" \nage = " + age);
	}
}
public class TestDemo1{
	public static void main(String args[]){
		Person per = new Person();
		per.setName("张三");
		per.setAge(13);
		per.info();
	}
}

image-20210727174228951

private实现封装的最大特征在于:只允许本类,而不允许外类访问

private只是封装的第一步,如果要学明白,还需要学习多态、继承。

2、构造方法与匿名对象

构造方法就是在使用关键字new实例化新对象的时候进行调用,但是对于构造方法需要遵守以下原则

  • 方法名称必须与类名称相同,并且构造的方法没有返回值,每个类中一定至少有一个构造方法,如果类中没有明确的定义任何一个构造方法,如果类中没有定义任何一个构造方法,那么将自动生成一个无参的构造方法
  • 构造方法是在new对象的时候才执行

疑问:既然构造方法中没有返回数据,为什么不使用void囊?

现在类中的组成:属性、普通方法、构造方法

属性是在对象开辟堆内存的时候开辟空间

构造方法是在使用关键字new的同时调用

普通方法是在new实例化对象完成之后进行调用的

构造方法的作用:

  • 构造方法的调用和对象的内存分配几乎是同步完成,所以可以利用构造方法设置类中的属性内容,构造帆帆噶可以给类中的属性进行初始化
  • 通过构造方法设置内容,实际上可以避免重复的setter调用了
  • setter方法除了具备有设置内容之外,也可以承担修改数据的操作。
  • 既然构造方法本身属于方法,那么方法就一定可以重载,而构造方法的重载更加简单,因为方法名称就是类名称所以能够做的只是实现参数的类型和个数的不同。

在定义若干个构造方法的时候按照参数的个数采用升序或降序进行排列。

class Person{
	private String name;
	private int age;
	public Person(){}
	public Person(String name){
		name = name;
	}
	public Person(String name, int age){
		name = name;
		age = age;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public void setAge(int age){
		this.age = age;
	}
	public int getAge(){
		return age;
	}
	public void info(){
		System.out.println("name = "+ name +" \nage = " + age);
	}
}
public class TestDemo1{
	public static void main(String args[]){
		Person per = new Person("李四",80);
		per.setName("张三");
		per.setAge(13);
		per.info();
	}
}

image-20210727194138758

3、简单java类

class Emp{
	private int empno;
	private String ename;
	private String job;
	private double sal;
	private double comm;
	public Emp(int no,String name,String j,double s,double c){
		setEmpno(no);
		setEname(name);
		setJob(j);
		setSal(s);
		setComm(c);
	}
	public void setEmpno(int no){
		empno = no;
	}
	public void setEname(String name){
		ename = name;
	}
	public void setJob(String job){
		job = job;
	}
	public void setSal(double s){
		sal = s;
	}
	public void setComm(double c ){
		comm = c;
	}
	public int getEmpnoP(){
		return empno;
	}
	public String getEname(){
		return ename;
	}
	public String getJob(){
		return job;
	}
	public double getSal(){
		return sal;
	}
	public double getComm(){
		return comm;
	}
	public String getInfo(){
		return "empno = " + empno + "\n" +
				"ename = " +ename + "\n" +
				"job = " +job + "\n" +
				"sal = " +sal + "\n" +
				"comm = " +comm ;
	}
}
public class TestDemo2{
	public static void main(String args[]){
		//测试类
        System.out.printf(new Emp(2021,"Joker","CEO",2000.0,0.0).getInfo());
	}
}

4、数组

数组属于引用类型,所以在使用前一定要开辟空间,本身除了声明并开辟空间之外还有另一种开辟模式,采用我们的分布模式开辟数组空间。如果使用数组不开辟空间,会出现NullPointerException异常。

public class TestDemo3{
	public static void main(String args[]){
		//第一种声明的方式
		int [] num = new int [3];
		//第二种声明数组的方式
		int [] num = null;
		num = new int [3];
		num[0] = 0;
		num[1] = 1;
		num[2] = 2;
		for(int i = 0;i < num.length ; i++){
			System.out.println(num[i]);
		}
	}
}

数组在开发之中一定会使用,但是像一些讲解的时候这么用的数组少了,在以后实际开发,会更多使用数组概念,而直接使用数组99%的情况下只是做for循环数组。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Maven插件的安装及使用

    Maven插件的安装及使用

    这篇文章主要介绍了Maven插件的安装及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 带你了解Spring AOP的使用详解

    带你了解Spring AOP的使用详解

    这篇文章主要介绍了Spring AOP的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Springmvc异常映射2种实现方法

    Springmvc异常映射2种实现方法

    这篇文章主要介绍了Springmvc异常映射2种实现方法以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。,需要的朋友可以参考下
    2020-05-05
  • Mybatis结果集映射一对多简单入门教程

    Mybatis结果集映射一对多简单入门教程

    本文给大家介绍Mybatis结果集映射一对多简单入门教程,包括搭建数据库环境的过程,idea搭建maven项目的代码详解,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • Java的idea连接mongodb数据库的详细教程

    Java的idea连接mongodb数据库的详细教程

    这篇文章主要介绍了Java的idea连接mongodb数据库的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 基于Tomcat7、Java、WebSocket的服务器推送聊天室实例

    基于Tomcat7、Java、WebSocket的服务器推送聊天室实例

    HTML5 WebSocket实现了服务器与浏览器的双向通讯,本篇文章主要介绍了基于Tomcat7、Java、WebSocket的服务器推送聊天室实例,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • 微信公众号支付(二)实现统一下单接口

    微信公众号支付(二)实现统一下单接口

    本篇文章主要给大家介绍调用微信公众支付的统一下单API,通过参数封装为xml格式并发送到微信给的接口地址就可以获得返回内容,需要的朋友可以参考下本文
    2015-09-09
  • java如何获取用户登录ip、浏览器信息、SessionId

    java如何获取用户登录ip、浏览器信息、SessionId

    这篇文章主要介绍了java如何获取用户登录ip、浏览器信息、SessionId,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Apache DolphinScheduler实现自动化打包单机/集群部署详解

    Apache DolphinScheduler实现自动化打包单机/集群部署详解

    这篇文章主要为大家介绍了Apache DolphinScheduler实现自动化打包单机/集群部署详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java 入门图形用户界面设计之复选框

    Java 入门图形用户界面设计之复选框

    图形界面(简称GUI)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,本篇精讲Java语言中关于图形用户界面的复选框
    2022-02-02

最新评论