第1课_Java基础知识

 

 

一、android系统的基本框架如图一所示,应用程序是用java编写的,底层驱动是用C代码写的,java与C怎么连接在一起主要是通过本地服务。android系统的核心主要在于framwork层.

二、

2.1 第一个java程序:需要注意的是类的命名,首字母必须要是大写,而且文件的名字要跟类名保持一致。

public class Hello{
     public static void main(String args[]){
         System.out.println("Hello,World!");
     }
 }

编译运行命令如图二:

编译

javac Hello.java

此时会在当前文件夹生成 Hello.class 文件

2.2 循环打印的例子:

public class Hello{
    public static void main(String args[]){
        int i = 0;
        for (i = 0;i < 3;i ++){
            System.out.println("Hello World");
        }
    } 
}

编译运行命令如图三:

2.3 java与C语言的数据类型对比如图四,java中无指针类型的数据,有引用类型的数据.java中字符串是一个string类。数据不丢失的前提下可以自动转换,

图四

public class Var {
	public static void main(String args[]) {
	/*
	用source sight写的代码默认编码都是ascii,而java编译器是以utf-8来解析这些字符的
	当我们使用汉字的时候,就无法用utf-8来解析,所以有两种方式:
	1.去掉汉字	2.将汉字转换成utf-8
	使用UE打开默认是DOS就是ascii,进行转换
	*/
		int   a = 3;
		float f = (float)3.14;
		float f2 = 3.14f;
 
		int i = 4;
		short s = 4;
		short s2 = (short)40000;
 
		//s = i;
		s = (short)(s + 1);  
		s = (short)(s + s2);
 
		/* Java has no pointer java里面没有指针和malloc函数*/
		//int* p = malloc(10*sizeof(int));
		//那么java里面就采取这种方式
		int p[] = new int[10];
		int p2[] = {1,2,4}; /* static alloc 静态分配数组*/
		
		//char str[100];  //c语言中是这样定义一个数组的
		//java里面就需要这样来定义数组
		char str[] = new char[100];//str变量是在栈里,内容是在堆上
 
		//char str2[] = "abc";
		//java里面定义一个字符串
		String str2 = "abc";
 
		p = null;
		p2 = null;
		str = null;
		str2 = null;
	}
}

数据类型转换

自动转换

数据不丢失的前提下可以自动转换

int a=30;
long b = a;  // 自动转换,因为long的表示范围比int大
 
float c = 3.1
int d = (int)c; // 必须使用强制转换

注意:整数默认是int,有小数时默认是double

强制转换

例子

byte  b= 1;
short s= 3;
编译器会判断该值有无超过该变量的表示范围,如果超过就报错。
 
short s = 1;
s = s + 1; // 出错,因为对于byte,short的运算,为了保证精度,会自动转换为int类型
 
s = (short)(s + 1);
 
short s2 = 1;
s = s + s2;  // 出错,理由同上

 

 

 

相关代码:

public class Var{
    public static void main(String args[]){
        int a = 3;   //整数默认是int,
        float f1 = (float)3.14; //有小数时默认是double,因此这里需要转换不然数据精度会丢失 
        float f2 = 3.14f;

        int i = 4;
        short s = 4;    //数据不丢失的前提下可以自动转换
        short s2 = (short)40000;  //超过数据范围,需要强制转换

        //s = i;
        s = (short)(s + 1);    //,因为对于byte,short的运算,为了保证精度,会自动转换为int类型,因此等号右边需要强制转换
        s = (short)(s + s2);

        //int* p = malloc(10*sizeof(int)); 
        int p[] = new int[10];
        int p2[] = {1,2,4}; // static alloc

        // char str[100];
        char str[] = new char[100];

        //char str2[] = "abc";
        String str2 = "abc";


        p = null;
        p2 = null;
        str = null;
        str2 = null;
        
    }
}

 

2.4与C语言相比,Java的函数可以进行重载的操作,对函数的个数以及函数参数的类型也能够进行重载.相关代码如下

方法名相同

参数类型或个数不同

返回值可以相同也可以不同

public class Function{
    public static void main(String args[]){
        System.out.println(add(1,2));
        System.out.println(add(1,2,3));
        System.out.println(add(1.0f,2.0f));
    }

    public static int add (int x,int y){
        return x + y;
    }

    public static int add (int x,int y,int z){
        return x + y + z;
    }

    public static float add (float x,float y){
        return x + y;
    }
    
}

编译运行结果如下图:

2.5函数传递参数,如果要修改传递的参数要使用指针,相关代码如下:

 

参数

基本数据作为参数

  1. 方法内部对参数的修改不影响调用者

引用数据作为参数

  1. 方法内部修改了堆,结果会保留下来
public class Param {
    public static void main(String args[]) {
        int x = 1;
        fun (x);

        int p[] = new int[1];
        p[0] = 123;

        System.out.println("Before fun2: "+p[0]);
        fun2(p);
        System.out.println("After fun2: "+p[0]);
        
        System.out.println(x);
    }

    public static void fun(int x) {
        x = 100;
    }        

    public static void fun2(int[] p) {
        p[0] = 200;
    }        

}

编译运行执行结果:

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值