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

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

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 数据后面需要加L.

  • 字符型:

  • 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"
逻辑常量:true、false

(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;
}

内存分析图:


-------static变量和方法内存分析---------

  • static变量和方法存放在方法区内 **[ 属性ss和方法printSs() ] **,从属于类,只能调用同为static的变量和方法。调用static变量和方法时,直接调用类。
  • 而非static变量和非static方法存放在堆中 **[ 属性name,id和方法study(),sayHello() ] ,调用时必须先实例化对象[ new ] **,同时加载类信息,可以调用static变量和方法。

-------this关键字------

构造方法中,this是隐式参数,this.name指向括号中的name对象:



this不能用于static方法,因为static方法不指向对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,599评论 4 12
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,632评论 18 399
  • 感恩神的恩典,感恩神在我家在崇高身上的工作,今天晚上要小组,家里没水果了,我在做饭,崇高就下去买了水果回来并且把水...
    周淑峰阅读 639评论 0 0
  • 1.在我们第一次打包上传构建版本时候,会出现 这样的错误,一般是因为第三方的库里的,info.plist的文件导致...
    禅牧阅读 519评论 0 0