13072018-学习JAVA随笔

 

 

 

1.JAVA命名规则

    驼峰。单词首字母大写。

    注意JAVA编程规范。

2.输出输入

    System.out.println();

    Scanner in=new Scanner(System.in);

3.break 和 continue

    break 跳出循环,而且break所在的循环体已经结束。

    continue 中断循环中的迭代,继续循环下一个迭代。continue所在的循环体没有结束。

    break跳出本层循环,continue跳出本次循环。

4. for each 循环 读作(for each element in a)

    for(variable : collection) statement

    for(int element :a) System.out.println(element);

// 16-07-2018

5. 阅读JAVA编码规范

    代码结构说明可以导入,(大雾),自己写的特别难看。

6. for each 循环语句不能自动处理二维数组的每一个元素,它是按照行,也就是一维数组处理的。要想访问二维数组a的所有元素,需要使用两个嵌套的循环,如下所示。

for(double[] row : a)
    for(double value : row)
        do something with value
/**
 * 杨辉三角
 * @author panbo
 *time:17-07-2018
 */
public class MyJavaPrograme_LotteryArray {
	public static void main(String[] args)
	{
		final int NMAX=10;
		
		//allocate triangular array
		int[][] odds = new int[NMAX+1][];
		for(int n=0;n<=NMAX;n++)
		{
			odds[n]=new int[n+1];
		}
		
		//fill triangular array
		
		for(int n =0;n< odds.length;n++)
		{
			for (int k=0;k < odds[n].length;k++)
			{
				
				// compute binomial coefficient
				int lotteryOdds = 1;
				for(int i=1;i<=k;i++)
				{
					lotteryOdds=lotteryOdds*(n-i+1)/i;
					
					
				}
				
				odds[n][k]=lotteryOdds;
			}
			
		}
		
		for(int[] row : odds)
		{
			for(int odd : row)
				System.out.printf("%4d",odd);
			System.out.println();
		}
	}

  7. JAVA中类有三种关系:依赖(“uses-a”),聚合(“has-a”),继承(“is-a”).可以使用类的接口解决复杂任务,而不必知道其中实现的具体细节。

 8.构造器  (就是C++里面的构造函数,但是一定要和new一起)

    构造器与类同名,每个类可以有一个以上的构造器,构造器可以有0个、1个、或多个参数,构造器没有返回值、构造器总是伴随着new操作一起调用。

9.封装问题.

如果需要返回一个可变的数据域的拷贝,应该用clone来避免错误。

class Employee
{
    private Date hireDay;
    ...
    public Date getHireDay()
    {
        return hireDay.clone();
    }
    ...
}

C++里面只能有一个main,但是JAVA里面每一个类可以有一个main方法

10. Java 程序设计 对对象采用的不是引用调用,实际上,对象引用进行的是值传递。

     一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)

     一个方法可以改变一个对象参数的状态

     一个方法不能让对象参数引用一个新的对象

(c++和Java还是有区别的,别用自己的思想去想当然,需要查资料的多动手,争取手熟)

11.注释

类注释 /**+回车 会自动生成。

方法注释@param 变量描述  @return描述 @throws描述 抛出异常 

域注释,

通用注释  @author @version @since                     @see @link  增加超链接,可以用于类,也可以用于方法

12. 类的设计技巧

1)一定要保证数据私有,不要破坏封装性。

2) 一定要对数据初始化。 Java不会对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值。

3)不要在类中使用过多的基本类型,将职责过多的类进行分解。

4)类名和方法名要能够体现它们的职责。

 

13. 继承

Java中用extends代替了C++里面的冒号(:),在Java中,所有的继承都是共有继承,

父类=超类,super

一个对象变量可以指示多种实际类型的现象被称为多态。在运行时,能够自动的选择哪个方法的现象称为动态绑定。

对象变量是多态的。

final 阻止继承, 如果在类名前,该类无法被继承,不允许扩展。  如果在方法前,子类无法覆盖这个方法。

abstract 抽象类。

在C++中,有一种在尾部用=0标记的抽象方法,称为纯虚函数。

class Person //c++
{
    public:
        virtual string getDescription()=0;
        ....
};

只要有一个纯虚函数,这个类就是抽象类。

20-07-2018: 被问到的问题

1:Java中,类如何向上层转化,为什么。

向上转型,通俗讲就是将子类对象转为父类对象。 向上转型时对象会遗失除与父类对象共有的其他方法。

向上转型的好处:代码变得简洁。  否则以子类对象为参数时,有多少个子类就需要写多少个函数。

子类可以赋值给超类,称之为向上转型,这个是自动的。

超类不可以赋值给子类,这个是向下转型,需要我们手动实现。

赋值给超类的子类引用在运行期间表现出不同的特性,这就是多态。

 

protect 作用于类的时候:只可以被本类本包的数据所访问。

protect 作用于 成员函数,方法,构造器的时候,可以被其他包的子类所调用,,而且往往写protected就是希望子类重写该函数。

 

2.Jvm内存总体一共分为了4个部分

stack segement(栈区): 保存基本数据类型的变量和自定义对象的引用。

heap segment(堆区):对象,每一个对象都包含了一个与之对应的class的信息

code segment(代码区):类中的方法,存在代码区。

data segment(数据区):static的变量或者字符串常量

在一个jvm实例的内部,类型信息被存储在一个称为方法区的内存逻辑区中。类型信息是由类加载器在类加载时从类文件中提取出来的。类(静态)变量也存储在方法区中。 

方法区: 
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

3 。排序

稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。

不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。

时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 

排序有一个特别好的博客:https://www.cnblogs.com/onepixel/articles/7674659.html

Object类是比较特殊的类,它是所有类的父类。“==”比较的是两个对象的引用是否相等,而equals方法是比较两个对象的实际内容。

抽象类,abstract 修饰, 有抽象方法的一定是抽象类,但是抽象类中不一定有抽象方法,抽象类被继承后,需要实现其中所有的抽象方法

继承抽象类的所有子类需要将抽象类中的抽象方法进行覆盖。 

如果每个子类都重写这个方法,就会造成代码冗余。所以引入“接口”

1. 接口  

用interface 关键字定义,在接口中定义的任何字段都是static和final的

接口是抽象类的延伸,可以将它看做是纯粹的抽象类。

接口中所有方法都没有方法体。

import除了可以导入包之外,还可以导入静态成员变量和静态成员方法。

final定义的变量为常量,必须进行初始化。

final可以修饰数组,一旦一个对象引用被修饰为final后,它只能恒定指向一个对象,无法将其改变指向另一个对象。

一个既是static又是final的字段只占据一段不能改变的存储空间。

异常:

运行时异常:

运行时异常种类
种类说明
NullPointerException空指针异常
ArrayIndexOutOfBoundsException数组下标越界异常
ArithmeticException算术异常
ArrayStoreException数组中包含不兼容的值抛出的异常
IllegalArgumentException非法参数异常
SecurityException安全性异常
NegativeArraySizeException数组长度为负异常

 

一个项目的开始到结束

project

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值