学习笔记

************************************************2016-08-15**********************************************

1、Java简述
2、JDK JRE JVM
   JVM(java virtual machine)java虚拟机:他保障了java的一次编程,到处运行的效果,这是因为java程序不是在操作系统上运行的,而是在java虚拟机
	上运行的,而java虚拟机又是在操作系统上运行,所以只要某个系统安装了java虚拟机就可以运行java的所有程序,而无需改变java代码。
3、java的数据类型
	3.1基本数据类型 值类型 byte short char int long float double boolean 
		byte:用8个二进制数来存储一个整数
		011001011
		一个二进制数叫比特位(bit)
		8bit=1Byte(字节)

		1024Byte=1KB
		1024KB=1MB
		1024MB=1GB
		1024GB=1TB
		数值在计算机内部是用补码的形式存储的:
			补码:正数的补码就是源码 10:00001010
			      负数的补码是绝对值的源码按位取反再末位加1
					-10:00001010->11110101+1->11110110\
					   
		byte的最大值:0111 1111 +127 2^7-1
			  最小值:1000 0000 -128 -2^7
		short:用16个二进制数来存储一个整数
			最大值:2^15-1
			最小值:-2^15
		int:用32个二进制数来存储一个整数
			最大值:2^31-1
			最小值:-2^31
		long:用64个二进制数来存储一个整数
			最大值:2^63-1
			最小值:-2^63
			long型变量在赋值的时候,如果数值超出int范围需要在后面加L
		float:单精度浮点类型,在赋值时后面要加F
			这是因为如果后面不加任何东西,系统默认数值为int
	
		double:双精度浮点类型,所有的小数值默认是double类型
		boolean:只有两个值,true和false
		char:用16个bit存放单个字符'a',或者用unicode表示'\u0061'
		转义字符:\t \r  \\ 
			
	3.2引用类型(new 出来的) 
	3.3常量:运行的时候值不能变
		字面值常量:
			a、字符串常量"abc"
			b、整数值常量:默认的都是int类型,在给变量赋值的时候会自动转换
				如果在变量的范围内,会自动赋值;如果不在,会报错:可能损失精度
				有四种表现形式:
					二进制:0-1
					八进制:0-7
					十进制:0-9
					十六进制:0-f
			c、浮点数常量:默认的都是double,如果用存成float,后面加f/F
			d、字符常量:'a' '\u0061' 0000 0000 0110 0001
			e、布尔常量:true、false
			f、空常量:null
	3.4数据类型转换问题:
		a、自动类型转换
			char->int
		byte-> short ->int ->long-> float-> double
			两个不同类型的数值进行数学运算的时候,会自动向多的类型拓展
			byte short char类型的变量,在进行数学运算的时候,会自动变成int再计算
		b、强制类型转换
			多的类型向少的类型转换,需要强制类型转换,有可能会损失精度。
	3.5变量
		a、声明:数据类型 变量名=值;
		b、命名规则:1、必须要遵守的:
				a、只能包含字母、数字、_、$
				b、数字不能放在第一个
				c、不能用系统的关键字、保留字
			2、要求遵守:
				a、首字母小写
				b、尽量取有意义的单词
				c、采用驼峰命名法(后面的每个词的首字母大写)
		c、变量的取值范围:离它最近的{}
			在相同的作用域中不可以有同名的
不同进制的转换:
	十进制负数转换为内存中的二进制存储方式:
		先将绝对值转换为二进制,在转换为补码

************************************************2016-08-16**********************************************

将一个String变为int/lont/short...
	int/long/short = Integer.parseInt/Long.parseLong/Short.parseShort...(str);
1、运算符
	1.1 算术运算符 + - * / % ++ --
		加法(+):数学运算和字符串连接
		除法(/):运算时类型不同,自动向大数变换,运算从左到右
		c++ ,先将值赋给别人,再自增
		++c , 先自增,在赋给别人
		x = 5;int p = x++ + ++x + x++;  p = 5 + 7 + 7 = 19;
	1.2 位运算法 & | ~ ^ >> << >>>
		&:同为1 则为1
		^:相同为0 相异为1
		<<:向左移动,低位补0,在有效范围内,快速的*2的幂
		>>:向右移动,高位补符号位,在有效范围内,快速的/2的幂
		>>>:无符号右移,最高位补0
		byte在运算时自动转换为int
	1.3 关系运算符  > < == != <= >= 运算结果是boolean
		
	1.4 逻辑运算符  && || ! 操作数也是boolean 运算结果是boolean
		运算符的优先级  ! > && > ||
	1.5 条件运算符
		三目运算符: 判断条件(boolean值) ? 结果1(true): 结果2(false)

2、条件控制语句
	2.1、if else
		
	5.2、switch(只能是整数,枚举) case
3、循环控制语句
	3.1 do while 循环
	3.2 while 循环
	3.3 for 循环

4、利用Scanner从屏幕输入
	首先导入Scanner所在的包:import java.util.*;
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
5、获取本机的月份值:日期(DATE)
	首先导入包:import java.util.*;
		Calendar c = Calendar.getInstance();   //获取日历对象
		int month = c.get(Calendar.MONTH)+1;    //获取当前月份

*************************************************2016-08-17*********************************************

1、保留两位小数:
	System.out.printf ("结果为:%.2f" , sum) ;

2、break 跳出循环 
   continue 结束本次循环
   return 返回方法外部
3、sqrt()平方根

************************************************2016-08-19**********************************************

1、数组(是特殊的集合):
	1.1、数组里面的元素必须是同一个类型
	1.2、数组一旦创建,长度就不能变化
2、初始化:
	2.1、静态初始化(常见)
		int [] a = {2,3,4,6};
		a、长度系统自动判断
	2.2、动态初始化
		int [] a = new int [2];
		int [] b = new int []{1,23,4,65};
3、属性:
	3.1、length:长度
	3.2、索引/下表 index 通过索引来访问/修改数据
		数组名[下表]
		下表从0开始

值类型存放到栈里面

随机数:
	import java.util.Random;
	Random r = new Random();
	int num = r.nextInt(10);

4、二维数组:

************************************************2016-08-16**********************************************

1、方法:
    1.1声明:
	[修饰符] 返回值类型 方法名(形参列表){方法体}
    1.2调用方法啊:
	方法名(实参);

2、值和引用类型的传递
    基本类型传递是值传递:放在栈中,各自改变,互不相干。
    引用类型传递:放在堆中,指向相同的地址,一改全改。
    String:传递的是地址,内容不可改,修改要开辟新空间。
    数组:与引用型数据类型一样。



******类 && 对象******************************************2016-08-22**********************************************

对象模型的特点,用自己的话总结一下
    封装  继承  多态
抽象:

封装:
    

构造方法:
    1.没有返回值
    2.名字和类名相同
    3.每个类的内部有一个默认的无参的构造器
    4.一旦自己写了构造方法,默认的构造方法就消失了
    5.要想使用无参的构造方法,就自己写。


重载(overload):
    同一个类中,方法名,参数列表不一样,不管返回值类型
    构造方法也可以重载



**********访问修饰符 && this &&  static**************************************2016-08-23**********************************************
1、访问修饰符
    public : 所有可以访问

    default 默认 : 类内部和同包的其他类访问,其他包要访问要导包

    protected : 类内部访问,同包访问,其他包的子类访问

    private : 仅在类内部访问。   特例:内部类可以访问外部类的私有变量。?????


2、this的作用 : 
    a、可以代指当前对象。
    b、也可以在构造器中用this()调用构造器
	1.必须在构造器中调用
	2.必须放在第一行
	3.不能循环调用 

3、static的作用 :
    a、静态成员是该类的所有对象共有的,一改全改 
    b、先于对象先生成,对象还没创建时,静态变量已经存在
    c、随着类的加载而加载
    d、通过类名访问
	也可以通过对象来访问
    e、静态区域中只能用静态成员(字段,方法),非静态成员和this不可以使用
    f、没有静态构造器,构造器前面只能是 private protected && public 
总结:遇到static就用类名来调用

4、代码块
    a、局部代码块 :写在方法内部,用于限定了变量的作用域
    b、初始化块   :写在类的成员位置,new对象的时候,先调用初始化块,再调用构造器
	作用:可以把多个构造方法中共同的代码放到初始化块中,不管调用哪个构造器,都会先执行初始化块(初始化一次,加载一次)
    c、静态初始化块 :在类的成员位置,前面加static,只加载一次,可以有多个块。
	作用:一般是对类进行初始化,初始化静态变量

5、继承
    a、java 单一继承

Animal a1 = new Dog();
子类(dog)自动转为父类(animal),转化后animal 只有动物的方法,dog的独有的方法消失了
父类(animal)不能强制转换为子类(dog),除非,父类已经被子类自动转过,否则会出现错误。
	Animal a1 = new Animal();
	Dog d1 = new Dog();
	Dog d2 = new Dog();
	a1 = d1;  //自动转换,这是a1 的本质已经是Dog
	d2 = (Dog)a1; //强制转换,可以转换
	但是如果直接  d2 = (Dog)a1;  //不可转,因为a1本质还是Animal
	

自己总结:
	子类实例化时,是先调用自己的构造器,子类的构造器不管有没有参数,构造体内第一句总是super(父类的构造器),
		先运行super,再执行其他东西。
	当父类构造器有参数时,子类必须也要有这个参数。调用子类传个参数,参数再传个父类,然后改变父类的属性值。



instanceof运算符:实例的属于哪个类。
	boolean  b = a1 instanceof Dog;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值