Java语言基础1

1.关键字

Java的关键字对Java的编译器有特殊的意义,用来表示一种数据类型, 或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数,关键字都是小写的

2.标识符

  1. 标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的
  2. Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成
  3. 在Java中是区分大小写的,而且还要求首位不能是数字
  4. Java关键字不能当作Java标识符

3.注释:

3.1 单行注释//
3.2 多行注释/*  */
3.3 文档注释/**  */注释内部文字可以提取成文档说明书

4.常量和变量:

常量:

整数常量:所有整数
小数常量:所有小数
布尔常量:true,false
null常量:null
字符常量:将一个字母或数字加单引号标识' a '
字符串常量:将一个或多个字符用双引号标识" abc "

注意区分空字符串" "和null区别

进制:

二进制,八进制用O开头表示,十进制,十六进制用Ox开头表示
1字节byte = 8个bit(二进制位)
1k = 1024
3个二进制位表示一个8进制位
4个二进制位表示一个16进制位
ipv4地址就是由四个字节组成,每段一个字节,比如192.130.1.100
现已升级到ipv6,每段融入字母

负数的二进制位表现:
绝对值的二进制取反加1,负数的二进制位的最高位是1

变量:
必须被初始化,并且只在自己的作用域有意义,在内存中建立一个变量空间,离开作用域空间就被释放了

1.定义:
内存中的一个存储区域,有自己的名称和数据类型(java的强类型约束该空间只能存
一种类型数据),该区域数据在同一类型范围内不断变化

2.作用:
用来不断存放同一类型变量,并可以重复使用这段空间

3.什么时候用:
一旦数据不确定就使用变量

变量声明后必须初始化值,并且有自己作用范围,只在自己作用域有效,进行运算时两边类型
必须一致,类型不一致内存空间就不一致。若两边是数值型,可以做自动类型提升,进行类
型转化,以占用内存空间较大的为主

数据类型:

Java是强类型语言,每种数据都定义了明确的数据类型,在内存中分配了大小不同的内存空间
(1).基本数据类型:
      整数默认int,小数默认double
       a.数值型:
            整数型:
                  byte:8个二进制位
                  short:16个二进制位
                  int:32个二进制位
                  long:64个二进制位, 长整型后面要加l, 
                       long l = 123l;非默认使用要加符号
            浮点型:
                  float:单精度4个字节
                  double:双精度8个字节
       b.字符型:可以中文(两个字节)
       c.布尔型
(2).引用数据类型    

容易犯的错误:

1.  byte b = 3;
    b = b + 4;会出现丢失精度,
    4是int型,b是byte型,b + 4时进行了自动类型提升使得b + 4  的结果是int型,而
    等号左边的b是byte型,把int型往byte型赋值,必然出现损失精度,若想进行赋值需要
    进行强制类型转换 b = (byte)(b + 4),强制转换要慎用,会丢失精度

2.  float也是4个字节,4个字节中存在小数位,float和int进行相加时结果仍是float型

 ‘a’ + 1 = 98
  a 对应ASCII表97
  Unicode国际标准表识别中文
  负数字节最高位是1 

3.  整数默认int类型
     byte b = 4;
     byte b = 3 + 7; 可以
     byte b1 = 3;
     byte b2 = 7;
     b = b1 + b2; 不可以;右边是变量运算结果不确定且可能超出范围,
     Java是强类型语言,右边值不确定检查类型时检查不出来就会报错,这
     种情况一般出现在整型的多字节往少字节赋值,比如b1 = 127;
     若定义int x; x = b1 + b2;无论byte型的b1和b2如何赋值不可能超出int范围

5.运算符:

1.算数运算符: +  -  *  /  %  +(连接符)  ++  --

              /运算注意,6370 / 1000 = 6;
              %运算涉及到负号,负号只参考被模数
              任何数据只要和字符串相加都是相连接,3 + ‘2’得字符串’32’

举例:
    Int a = 4, b = 5;
    打印a ,b 的值System.out.println(a + ‘,’ + b);
    System.out.println(“a =” + a + “, b =” + b);
    int a = 3, b;
    b = a++; 在内存中的过程是先把a当前值取出,在内存中临时存储,然后a进行自增
    运算,然后将内存中先前临时存储的a的值赋给b,所以最后a = 4; b = 3;实际上就是
    运算顺序的问题,若b = ++a;就不需要先临时存储,a = 4, b = 4;

    int i = 3;
    i = i++;
    输出i = 3,

2.赋值运算符: =, +=, -=, *=, /=, %=;

举例:
    short s = 3;
    s += 4;做自动类型转换
    s = s + 4;会报错,应写成s = (short)(s + 4);

3.比较运算符:
            运算完的结果必须是true和false

4.逻辑运算符:
            &  |  !
            用于连接两个布尔类型的表达式
            && 和 & 区别:
            &:无论左边运算结果是什么,右边都参与运算
            && : 当左边结果为false时,右边不参与运算
            | 和 || 区别:
            | :无论左边运算结果是什么,右边都参与运算
            || : 当左边结果为true时,右边不参与运算

5.位运算符:
            所谓位运算是二进制计算
            &:任何数&1都是本身
            | :是有效位,或运算可以将有效位保留
            异或 ^ 不同得1,一个数异或同一个数两次,结果还是这个数
            << : 二进制位向左移,空位补0,左移一位数扩大二倍
                   左移可以完成2的次幂乘运算
            >> : 二进制位向右移,右移一位变为原本一半,对于高位出现的空位原来高位是啥就补啥
                   右移可以完成2的次幂除运算
            >>>:无符号右移:数据右移时,高位出现的空位,无论原符号是什么都用0补

            应用:
                运算比较高效直接用位运算,最有效计算2 * 8是2 << 3
                对两个整数变量进行互换(第三方变量):

                 int a = 3,b = 5;
                 a = a ^ b,
                 b = a ^ b,
                 a = a ^ b;

6.三元运算符:

                条件表达式?表达式1:表达式2

6.程序流程控制:

 顺序,判断,选择,循环
         
 一.判断:
     1. if (条件表达式) {
            执行语句;
        }
     2. if (条件表达式) {
            执行语句;
        }
        else {
            执行语句;
        } 
       三元运算符就是if else语句简写格式.
       简写格式什么时候用?当if else 语句有一个具体的结果时可以简写成三元运算符
     3. if (条件表达式) {
            执行语句;
        } else if (条件表达式) {
                执行语句;
        } else {
                执行语句;
        }
        单句语句只执行一句;
     4. if (条件表达式) {
           执行语句;
        } 
        if (条件表达式) {
           执行语句;
        } else {
             执行语句;
        }
        执行两个if语句

此处即为多个else if 和多个if的区别

局部变量代码块可以决定局部变量的生命周期;

二.选择:

switch(表达式) {
    case 取值1:
        执行语句;
         break;
    case 取值2:
        执行语句;
         break;
    ......
    default:
        执行语句;
        break;
}
switch 后面的表达式只有四种类型可以选择byte, short, int, char;
无论default放在前面后面,都先执行case
需要注意的是break,只有switch的最后一个break可以省略,如果如下写法:
int x = 2;
switch(x) {
    default: 
        System.out.println("d");
    case 4:
        System.out.println("a");
    case 1:
        System.out.println("c");
    case 3:
        System.out.println("e");
    case 5:
        System.out.println("f");

顺序判断流程:
    先判断case,没发现符合case然后选择default,打印d,因为default没有break,
    继续执行case依次打印输出a c e f

    可以多个case执行一个语句

if 和 switch的应用场景:
    if:
            1.对具体的值进行判断
            2.对区间判断
            3.对运算结果是boolean类型的表达式进行判断
    switch:
            1.对于具体的值进行判断
            2.值的个数通常固定
            对于几个固定的值判断,建议用switch,因为switch语句会将具体的
            答案都加载进内存,效率相对比较高

三.循环
 1. while(条件表达式) {
        执行语句;
    }
    循环的两个关键,循环条件和循环次数

 2.  do {
               执行语句;
        } while(条件表达式)
     do while 先执行后判断,无论条件是否满足循环体,至少执行一次

 3.  for (1.初始表达式; 2.循环条件表达式(需要布尔类型);  4.循环后的操作表达式) {
         3.执行语句(循环体);
     }
    上面数字是执行顺序
  
    while循环和for循环可以互换,区别在于for为了循环而定义的变量在for循环结束后
    就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用,考虑变量的后续使用与否来选择是用for还是while

     无限循环的简单形式:
     while(true) {}
     for (;;) {}


     什么时候使用循环结构?
     当对某些代码执行很多次时,使用循环结构完成
     当对一个条件进行一次判断时,使用if语句
     当对一个条件进行多次判断时,使用while语句

     注意:
         在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要,循环通常情况下,
         需要定义条件,需要控制次数

break 和 continue:

break跳出语句,作用的范围要么是switch语句,要么是循环语句
记住,当break单独存在时,下面不要定义其他语句,因为执行不到。
break表示跳出当前循环,如果出现了循环嵌套,break想跳出指定循环,可以通过标量来完成
循环可以起名字,

xunhuan1:for {
              xunhuan2:for{
                           break xunhuan1;
                           }
              }
加了名字可以直接跳出最外层循环,不加名字只能跳出当前循环

continue:作用范围循环结构,结束本次循环,继续下次循环,如果continue单独存在时,
下面不要有任何语句,因为执行不到,continue同样可以通过循环名来执行继续语句

转义字符:

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

推荐阅读更多精彩内容

  • 常量表示不能改变的数值。 Java中常量的分类:1,整数常量。所有整数2,小数常量。所有小数3,布尔(boolea...
    比海_庚深阅读 282评论 0 0
  • 命名规范: 类名:1.一般选取能表达类的作用的英文单词组成。2.类名首字母要大写,如果多个单词构成则每个单词的首字...
    比海_庚深阅读 163评论 0 0
  • 有些时日没见着对门李大爷了,最后一次见到他还是一个月以前。那次见面,觉得他瘦了好多,没说几句话,他就不断的唉声叹气...
    曦华阅读 415评论 0 0
  • 风留冬叶雨留窗楼影婆娑树影长人愈仓皇车愈缓灯色清寒暮色黄
    胡三多阅读 404评论 2 7
  • 还流着鼻水,自愈系统还在与病毒战斗。感冒的症状不重,不赶时间不忙着上路。明天再交两天房钱,买斤冰冻排骨煲排骨粥吃吃...
    环华小蜗牛阅读 232评论 0 1