java小结1

  经过一周对java的学习,有了不小的收获。感觉Java和C++有很多相通之处,相同的知识就不加赘述啦,在此整理一些新学到的知识。

1.Java的基本数据类型

数据类型名称占用字节默认封装器类
byte 字节型10Byte
short 短整型20Short
int 整型40Interger
long 长整型80.0lLong
float 浮点型40.0fFloat
double 双精度浮点型80Double
char 字符型2\u0000Character

需要注意一点:

  • 浮点数是不精确的,不能用浮点数进行比较
  • 如果需要进行不产生误差的精确数字计算,需要使用BigDecimal类
import java.math.BigDecimal;
 
public class Main {
 
    public static void main(String[] args) {
 
        BigDecimal bd = BigDecimal.valueOf(1.0);
 
        bd = bd.subtract(BigDecimal.valueOf(0.1));
 
        bd = bd.subtract(BigDecimal.valueOf(0.1));
 
        bd = bd.subtract(BigDecimal.valueOf(0.1));
 
        bd = bd.subtract(BigDecimal.valueOf(0.1));
 
        bd = bd.subtract(BigDecimal.valueOf(0.1));
 
        System.out.println(bd);//0.5
 
        System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001
 
    }
 
}

2.java的scanner输入

2.1 基本用法

     System.out.println("请输入数据:");
	 String str = scanner.nextLine();
	 System.out.println("输出的内容:"+str);

  • IO流的类最好用完就关,否则会一直占用资源
     scanner.close();

2.2 next( )与nextline( )

  • next( )
    不能得到带有空格的字符串,输入遇到空格或换行就结束。
package Scnner;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);	
		System.out.println("使用next方式接收:");
		//判断用户有没有输出字符串
		if (scanner.hasNext()==true)	{
			String str = scanner.next();	
			System.out.println("输出的内容为:"+str);
		}
	}
}

  • nextline()
    可以获得空白,遇到换行就结束输入。
package Scnner;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);	
		System.out.println("请输入数据:");
		String str = scanner.nextLine();
		System.out.println("输出的内容:"+str);
		scanner.close();
	}

3. java初始化块

在Java中,有两种初始化块:静态初始化块和非静态初始化块。

  • 非静态初始化块
    非静态初始化块给所有对象进行统一初始化,对象一建立就运行,且优先于构造函数的运行。

  • 静态初始化块
    静态代码块用于初始化类,随着类的加载而执行,不管创建几个对象,都只执行一次,带static关键字。

需要注意:
初始化块的执行顺序是:
父类的静态初始化块->子类的静态初始化块->父类的初始化块->父类的构造函数->子类的初始化块->子类的构造函数

4.Java包机制(package)

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

4.1包的作用
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

3、包限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

举个例子说明包的使用:
创建一个名为 cats 的包,并在包中加入一个接口(interface):


package cats;
interface Cat {
   public void eat();
   public void travel();
}

接下来,在同一个包中加入该接口的实现:

package cats;
public class MammalInt implements Cat{
 
   public void eat(){
      System.out.println("Mammal eats");
   }
 
   public void travel(){
      System.out.println("Mammal travels");
   } 
 
   public int noOfLegs(){
      return 0;
   }
 
   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}

5.import语句

import可用于在 Java 程序中导入包。

举例说明:
下面的 school 包已经包含了 Student 类,接下来向 school 包中添加一个Teacher 类。Teacher 类引用 Student 类的时候可以不用使用 school 前缀。
1.Teacher 类在 school 包中

Teacher.java 文件代码:
package school;

public class Teacher
{
   public void teacherStudent(Student e)
   {
      e.mailCheck();
   }
}

2、 Teacher 类不在 school 包中

2.1使用类全名描述

school.Student

2.2用 import 关键字引入,使用通配符 *

import school.*;

3.使用 import 关键字引入 Student 类

import school.Student;

6.封装

  在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装的优点

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。

实现Java封装的步骤:
1.修改访问权限

public class Person {
    private String name;
    private int age;
    //name 和 age 是私有的,只能本类才能访问,由此达到信息隐藏的目的。
}

2.对每个值属性提供对外的公共方法访问。

public class Person{
    private String name;
    private int age;public int getAge(){
      return age;
    }public String getName(){
      return name;
    }public void setAge(int age){
      this.age = age;
    }public void setName(String name){
      this.name = name;
    }
}

举例说明下java封装类的实现:

public class EncapTest{
 
   private String name;
   private String idNum;
   private int age;
 
   public int getAge(){
      return age;
   }
 
   public String getName(){
      return name;
   }
 
   public String getIdNum(){
      return idNum;
   }
 
   public void setAge( int newAge){
      age = newAge;
   }
 
   public void setName(String newName){
      name = newName;
   }
 
   public void setIdNum( String newId){
      idNum = newId;
   }
}

通过如下操作EncapTest类的变量被访问:

public class RunEncap{
   public static void main(String args[]){
      EncapTest encap = new EncapTest();
      encap.setName("tom");
      encap.setAge(18);
      encap.setIdNum("123ms");
      System.out.print("Name : " + encap.getName()+ 
                             " Age : "+ encap.getAge());
    }
}

得运行结果:
Name : tom Age : 18

7.java数组

1.声明数组变量
==首先必须声明数组变量,才能在程序中使用数组。==下

dataType[] arrayRefVar;   // 常用
 
dataType arrayRefVar[];  //效果相同,但使用频率少

2.创建数组
Java语言使用new操作符来创建数组

arrayRefVar = new dataType[arraySize];
或
dataType[] arrayRefVar = {value0, value1, ..., valuek};

  • 数组变量的声明,和创建数组可以用一条语句完成
dataType[] arrayRefVar = new dataType[arraySize];


举例:

public class Array {
   public static void main(String[] args) {
      int size = 10;
      double[] a = new double[size];
      a[0] = 5.6;  a[1] = 4.5;
      a[2] = 3.3;  a[3] = 15;
      a[4] = 4.0;  a[5] = 34.33;
      a[6] = 34.0; a[7] = 11.1;
      a[8] = 1.93; a[9] = 123;
      double total = 0;
      for (int i = 0; i < size; i++) {
         total += a[i];
      }
      System.out.println("总和为: " + total);
   }
}

这周还做了些java题目,整理在博客 java练习1里。

  以上就是我这周的学习成果,感觉学到了不少新知识,满满的收获感,下周再接再厉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值