20160724------JAVA基本语法[标识符、数据类型、常量变量、内存分析]

10 篇文章 0 订阅

二、 基础语法
第一段程序:

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

1、标识符:

  • Java中凡是需要取名字的地方都叫做标识符。
  • 标识符可以由字母、数字、下划线、和美元符号组成。
  • 标识符的首字母不能是数字,且标识符是区分大小写的。
  • 标识符不能包含空格,不能包含@#等特殊符号。
  • Java中定义的关键字、保留字不能作为标识符但可以包含如:class private static public void。
  • 类名的每个单词的首字母大写:方法名、变量名第一个单词的首字母小写,其他单词的首字母大写。
  • -

2、数据类型

(1)基本数据类型:四类八种
这里写图片描述

  • 整型:

    • byte:8位,范围:-128(-27)~127(27-1),默认为0
      【强制转换:byte number=(byte)128;】
    • short:16位,范围:-215~215-1;
    • int:32位,范围:-231~231-1
    • long:64位,范围:-263~263-1
  • 字符型:

    • char
      表示单个字母,字符敞亮必须使用单引号‘‘括起来,如:‘A’;
      [字符串string不是基本数据类型,是引用数据类型]
  • 浮点型:
    • float[float类型数据需要在后边加上f
    • double
  • 布尔型:
    • boolean(true /false)默认为false

(2)数据类型排序:
这里写图片描述

(3)类型转换:

  • 自动数据类型转换:系统支持直接把某种数据类型的值直接赋给另外一种数据类型。
  • 强制类型转换:如果要把上图右边的数据类型转换为左边数据类型,则需要强制类型转换。强制类型转换格式为:(数据类型)值。例如:(int)size
    【强制类型转换应数以溢出,精度丢失(double转int,int转byte)】
//TestConvert
public class TestConvert {
    public static void main(String arg[]) {
        int i1 = 123; 
        int i2 = 456;
        double d1 = (i1+i2)*1.2;//系统将转换为double型运算
        float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
        byte b1 = 67; 
        byte b2 = 89;
        byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需
                                //要强制转换符
        System.out.println(b3);
        double d2 = 1e200;
        float f2 = (float)d2;//会产生溢出
        System.out.println(f2);

        float f3 = 1.23f;//必须加f
        long l1 = 123;
        long l2 = 30000000000L;//必须加l
        float f = l1+l2+f3;//系统将转换为float型计算
        long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)

    }
}

修正下列代码中的编译错误或者可能产生的溢出:

这里写图片描述

//TestConvert2
public class TestConvert2 {
    public static void main(String[] args) {

    int i=1,j=12;
    float f1=(float)0.1;  //0.1f  0.1是double类型,需要强制类型转换
    float f2=123;
    long l1 = 12345678,l2=8888888888L;//l2必须加L,否则会产生溢出
    double d1 = 2e20,d2=124;
    byte b1 = 1,b2 = 2,b3 = 127;//byte类型的范围是(-128~127)
    j = j+10;//变量必须赋值才能使用
    i = i/10;
    i = (int)(i*0.1);//运算后为double类型,需要强制类型转换
    char c1='a',c2=125;
    byte b = (byte)(b1-b2);//运算后为int类型,需要强制类型转换
    char c = (char)(c1+c2-1);////运算后为int类型,需要强制类型转换
    float f3 = f1+f2;
    float f4 = (float)(f1+f2*0.1);//运算后为double类型,需要强制类型转换
    double d = d1*i+j;
    float f = (float)(d1*5+d2);


    }
}

3、常量、变量

(1)常量:

常量是在程序运行中,值不能改变的量。用final定义。
语法:final<数据类型><常量名>=<初始值>

整型常量:123
实型常量:3.14
字符常量:'a'
字符串常量:"helloworld"
逻辑常量:truefalse

(2)变量:

从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域。因此,没一个变量使用前必须要先声明,然后进行赋值,才能使用。

这里写图片描述

4、内存分析

内存分为堆、栈、方法区。

  • 栈(stack):
    • 存放局部变量。
    • 线程私有,不能实现线程间的共享。
    • 先进后出。自动分配,连续内存空间,效率高。
  • 堆:
    • 存放new出来的对象。
    • 不连续内存空间,分配灵活,效率低。
  • 方法区:
    • 存放永远不变而且唯一的文件。(类代码信息、静态变量、字符串常量)
    • 被所有线程共享。
    • 不连续内存空间,分配灵活,效率低
//内存分析
public class Test{
    public static void main(String [] args){
    Car c1=new Car();
    c1.changeColor("红色");
    c1.showColor();
    System.out.println(Car.typeNum);
    System.out.println(c1.typeNum);

    Car c2=new Cae();
    Engine e=new Engine();
    e.speed=1000;
    e.weight=e;
    c2.engine=e;
    c2.color="黑色";

    c2.typeNum=10;
    System.out.println(c1.typeNum);
    }
}

class Car{
    static int typeNum=4;
    Engine enging;
    String color;

    void changeColor(String c){
        color=c;
    }

    void showColor(){
        System.out.println("我的颜色是:"+color);
    }
}

class Engine{
    int speed;
    int weight;
}

内存分析图:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值