从C++到java(二)

第三章 运算符,表达式和语句

1.各类型的精度  从小到大  byte  short  char int  long  float  double

如果混合类型运算中最高精度为long,float,double或者int,则最后结果分别为long,float,double或者int型,若最高精度小于int,最后结果为int型(用C++试了,short+char变成int。但是由于java没有sizeof所以就没有试)  其中运算指加减乘除,按位与或。

2.+-*/,关系,赋值,按位与或,按位异或(符号^,相同为0,不同为1)都相同

3.if,switch,for,while,break,continue都一样。其中要注意,break和continue是针对所在最小的循环而言

4.若有枚举变量

enum Weekday{

sun,mon,tue

}

则Weekday.value()表示sun,mon,tue组成的数组

可以定义 Weekday []a=Weekday.value();

 System.out.print(a[1]);

Java的数组定义支持两种格式:
int[] a和int a[]
前者是Java推荐的格式
后者是为了迎合C语言入门的编程人员的习惯

5.若有数组

for(声明循环变量  :  数组的名字)

例如

       int []b=new int[4];

       for(int i=0;i<4;i++)

           b[i]=2*i+1;

       for(int i : b)//只能在括号里定义,i依次取a数组的每一个元素的值

           System.out.println(i);

第四章 类与对象

简介

1.java是一种面向对象的语言,具有封装性,继承,多态的特点。

1.关于类的变量的有效范围

class a{

int i=0;//此时i等于0

{

int i=1;//此时i等于1 局部优先

this.i=2;//此时this.i等于2

}

//此时i等于0

}

2.命名,第一个字母小写,其他大写(变量,方法)

3.方法的重载。方法的名字一样,但是参数不一样。比如返回面积 float getArea(int r)//PI*r^2  floatgetaArea(int x, int y)//x*y 注意参数不同,返回类型不同不行

4.实例变量和类变量,实例方法和类方法。其中加static的是类变量和类方法。

5.

a.对变量的操作只能放在方法里,比如int a=0;valid  but  int a; a=0;invalid

b.实例方法既能对类变量也能对实例变量进行操作,能对类方法和实例方法进行调用,但是类方法只能对类变量进行操作,也只能调用类方法。

对象

1.创建一个类对象

class student

{

int a;

student(int b)

{

a=b;

}

}

student qiaozhijian=new student();//注意跟C++的类初始化不同。此时分配空间,默认值0。当没有构造方法或者有几个并且声明了无参数的默认构造方法。

student zhangyuchen=new student(0);//使用了自己设置的构造方法

2.对象的引用和实体

        a,java的对象在堆中分配内存,对象的引用是在栈中分配内存。当类创建一个对象时,类中的成员变量在堆中分配内存空间,这些内存空间称为变量的实体或者对象的变量,而对象中存放着引用,引用在栈中分配内存,确保实体由该对象操作使用。

b,两个类,p1,p2。p1=p2代表把p2的引用给p1,此时他俩的实体就相同了。

c,没有实体的对象叫做空对象,如果使用空对象就会产生nullpointerexception的错误报告,并且编译的时候不能检测,因此我们要注意。

d,java有垃圾回收机制,会周期的检测某个实体是不是已不再被任何对象使用。因此我们不用跟C++一样去释放内存。例如p1的实体到最后就会被释放掉。因此,java也很少出现内存泄漏,即程序忘记释放内存而导致内存的溢出。

参数传值

1.基本类型参数的传值:只能把低的传给高的,比如把int传给double

2.引用类型参数的传值,如数组,对象,接口,都是传他们的引用,因此改变参数的实体也会改变原函数的实体。

3.方法中的and so on 比如:

方法 float g(float a, int...x)//表示不确定数量的几个int型的x

{

for(int i=0;i<x.length;i++)//x.length表示实际输入的x的个数

{

int sum=0;

sum=sum+x[i];//表示第几个x

}

}

对象的组合

同一目录下的源文件的类可以相互调用

STATIC

关于类变量和实例变量

1.一个类创建的不同对象被分配不同的内存,但是类变量却是被共享的

2.改变其中一个对象的类对象,其他对象的类对象也被改变,因为两者本身就是一回事

3.在把类的字节码加载到内存的时候,同时也会给类变量分配空间。可以用类名调用类变量。

关于类方法和实例方法

1.在创建类时就和类变量一起被分配内存

2.因此可以不适用实例变量,仅用类变量就完成任务吗,节省了内存资源。

THIS

this.变量=类名.变量    this.方法=类名.方法  和C++差不多的

注意,如果方法的局部变量和成员变量相同,不能省去this,其他情况都是可以的

1.作用:包名的目的是有效的区分名字相同的类。不同源文件的两个类的名字相同时,可以通过类属不同的包来区分。

2.package  关键字  package 包名

3.package sunrise //写在源文件的开头

package sun.com.cn//表示得到的类的字节码文件保存在如d:\summer\sun\com\cn里

4.运行有包名的主类时,就要到其上一层目录中,用字java运行,比如 d:\summer\java sun.com.cn.main.java   //其中main是主类,.java是后缀(这是命令行运行,我没用过,前面说到了,我用Android studio直接编译的)

5.编译时  用字javac,也要在上一层,如 d:\summer javac \sun\com\cn\main.java 编译后就会生成.class文件

6.建议包名用自己公司的域名倒置,如cn.com.action。而且不用java做包名。

7.如果没有包名,只要字码节在一个目录里就属于同一个包,虽然还是没有包名

import

1.引用类库中的类。import语句要写在package和类名的中间。

有很多类库,比如java.until 数据结构类

import java.until.*表示引用所有的类

import java.until.Date 表示只引用until里的Data类(其中java.lang是核心类库,不用我们引用。并且import只会增加编译时间不会影响性能,我们只给用的着的类分配空间)

2.引用自定义包的类。

这点对于命令行来说还有一些步骤,我就不多说了。

简单地   import sun.com.cn.*

3.引用无包名的类

把类放到想引用他的类的同目录下。

4.有三个类都叫A,分别没有包名,包名是B,和C

那么 A是没有包名的类

B.A  C.A  分别是有对应包名的类

访问权限

private 只能自己的类访问

public 同一个包,被import后的别的包都能

protected 同一个包被访问,其他的包不行

friend  当没有前面三个时,就是友元的 ,访问权限和protected暂时一样,在后面讲到子类时还会继续说

private和protected不能修饰类

基本类型的类包装

基本用不到

反编译和文档生成器

javap和javadoc暂时用不到

jar文件

命令行的,不是很想了解,以后慢慢看。现在用不到,谁让我上来就Android studio了呢

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值