Java基础 学习笔记2
java基础 学习笔记 2:
主要知识点:
1. Java中类的构造方法理解
2. 全局变量与局部变量
3. setter与getter方法
4. 可变参数,
5. 单例模式(饿汉式与懒汉式)
详细笔记:
1,构造方法:1.名字和类名一模一样
2.没有返回值类型,连void都没有
3 .每一个类都有一个空的隐式的构造方法
4.如果手动的去写一个显式的构造方法,那么隐式的构造方法就不存在了
5.构造方法的作用就是用来创建对象的,不能调用(对象. 方法名();)
作用:可以用来初始化成员变量 (创建一个显式的方法)
2,全局变量:类中声明的;
静态变量 : static关键字修饰。//static见下注 1;
常量:final static 关键字修饰,值不可改变。
局部变量:方法,流程语句中的;
作用域:指变量的使用范围。从声明开始到所在大括号结束。
Scanner(ScannerDemo.java)是java.util包下的一个工具类,它的作用是用来接收控制台输入的信息。
3,setter与getter方法:
一个类中(Student),若private声明私有的值,则需要用setter,getter方法提供外界访问;
class Student{
private String name;
getter(用于获取):
[非私有修饰符] 字段类型 get字段名称(首字母大写)()
{
return 字段名;
}
Public void setName(String n)//name的setter和getter方法 {
this.name=name; }
setter(用于设置):
[非私有修饰符] void set字段名称(首字母大写)(字段类型 变量)
{
字段=变量;
}
public String getName()
{
return name;
}
4,可变参数,
从Java5开始,出现了可变参数。
特征为:参数个数可变,可以传递0到N个;
必须为方法最后一个参数;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
代码演示:
Public static void main(String[] args)
{
int array[]={2,3,1,5,4,6};
System.out.println(Arrays.toString(array));//注意Arrays.toString类方法的用法,见下注 2;
System.out.println(getSum(array));
//System.out.println(getSum(2,3,1,5,4,6));
}
staticint getSum(int array[])//计算元素之和 {
int sum=0;
for(int i=0;i<array.length;i++)
sum+=array[i];
return sum;
}
输出结果都为21,区别在于参数可变,
5,单例模式:保证整个项目运作期间某一个对象有且只有一个。
class Singleton1//饿汉式
{
private Singleton1(){}//先把构造方法私有化,不允许外界创建对象
private static final Singleton1 instance=new Singleton1();
/* 饿汉式就是声明的时候就赋值了
缺点为加载的时候就需要开辟空间,需要损耗性能,加载慢。
*/
public static Singleton1 getInstance()
{
return instance;
}
}
class Singleton2//懒汉式
{
private Singleton2(){}
private static Singleton2 instance;//=null
/* 懒汉式就是声明的时候没有赋值
缺点为线程不安全
*/
public static Singleton2 getInstance()
{
if(instance==null){
instance=new Singleton2();}
return instance;
}
}
class SingletonDemo
{
public static void main(String[] args)
{
Singleton1 s1=Singleton1.getInstance();
Singleton1 s2=Singleton1.getInstance();
System.out.println(s1==s2);//一个对象有且只有一个
Singleton2 s3=Singleton2.getInstance();
Singleton2 s4=Singleton2.getInstance();
System.out.println(s3==s4);//一个对象有且只有一个
}
}
总结,比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式,县城不安全,他是在需要的时候才创建对象,而饿汉式在加载类时候就会创建,
注:
1,static里面的数据是不能重复的,每一个对象用的成员变量都是一样的
类名.类变量名
类名.类方法,都是不需要创建对象直接使用的
main方法为什么是static?
main方法是程序的入口,在它执行之前没有任何任何对象被创建,否则就不是程序的入口了。访问一个对象的属性和方法一定要有对象才能访问。
不加static的一定要有对象的才能调用。
2,类 Arrays:此类包含用来操作数组(比如排序和搜索)的各种方法
toString(short[]a):返回指定数组内容的字符串表示形式。
此题目中,Arrays 类就是在遍历你传进去的数组,调用的是你数组元素的toString方法。
相当于对于一个数组arr[],打印输出时需要for遍历,而调用Arrays.toString(arr)就可以直接输出了,即:int array[]={2,3,1,5,4,6};
System.out.println(Arrays.toString(array));