尚学堂---基础语法1

1、标识符

Java对各种变量、方法和类等要素命名时使用的字符序列焦作标识符。(凡是自己可以起名字的地方都叫标识符)

命名规则:

  • 标识符由字母、数字、下划线"_"、美元符"$"组成,且不以数字开头
  • Java标识符大小写敏感,长度无限制

2、关键字

所有的关键字都是小写英文

3、Java基础数据类型

  3.1 Java常量:

  • 整型常量 123
  • 实型常量 3.14
  • 字符常量 'a'
  • 逻辑常量 true、false
  • 字符串常量 "Hello"

“常量”这个名字还会用在另外其他语境中表示值不可变的变量(参见final关键字)

  3.2 Java变量:

本质上讲,变量其实是内存中的一小块区域(不要理解成引用),使用变量名来访问这块区域。因此,每一个变量使用前必须先声明,再赋值,才能使用

int i = 100;
float f = 12.3f;
/*若d1, d2, d3为成员变量,则d1, d2初始值为0.0,d3初始值为0.123
  若d1, d2, d3为局部变量,则d1, d2不被初始化,必须赋初值
*/
double d1, d2, d3 = 0.123;
String s = "Hello";

比如: int i = 100; 方框名字为"i",方框里面的值为"100",不要理解成栈空间的”i“指向了堆空间的"100"

本质上讲,变量其实是内存中的一小块区域,变量有两个概念,一个是变量的名字,另一个是变量的值,即这一小块区域是有名字的,里面装着一个值,因此以后要想访问这小块区域里面的内容 就可以根据这小块区域的名字来访问了。就变量来说,该在内存里面分配多大的存储空间呢?不同的变量类型分配不同大小 的存储空间,每一个变量都是属于特定的数据类型的,声明成不同的数据类型,它就在内存里面分配不同的存储空间。

   3.3 Java变量的分类

  • 成员变量:方法外部、类的内部定义的变量
  • 局部变量:方法或语句块内部定义的变量(方法的参数叫局部变量)
  • 注意:类外面(与类对应的大括号外面)不能有变量的声明

变量作用域:凡是在“{  }”内声明的变量,出了这个“{  }”就没有作用了

   3.4 Java数据类型的划分

 基础数据类型4类8种:

  • 逻辑型- boolean 
  • 文本型- char     
  • 整数型- byte,short,int,long 
  • 浮点型- float,double 

逻辑型boolean:

  • 适用于逻辑运算,一般用于程序流程控制
  • 只允许取值true或false,不可以0或者非0的整数替代true或false,不允许空值

字符型char:

  • 单引号括起来的单个字符
  • Java采用Unicode(全球统一编码)编码,每个字符占两个字节,因此可用十六进制编码形式表示,例: char c1 = '\u0061' 
  • Java语言允许使用转义字符'\'来将其后的字符转变成其他的含义,例: char c2 = '\n'

全球的文字放到计算机里面表示全是0和1,Unicode是统一了全世界国家文字的一种编码方式,用这样的编码可以把全世界国家的文字连接在一 起。Unicode编码又分为两种,一种是Utf-8,另一种是Utf-16。JAVA所采用的是Utf-16,每一个字符占2个字节,任何国家的文字放 到Unicode里面都是占2个字节。

整数类型:

Java各整数类型有固定的表数范围和字段长度,其不受操作系统的影响,以保证Java程序的可移植性。

Java语言整型常量表达形式:

  • 十进制整数:如 12, -314, 0
  • 八进制整数:要求以0开头,如:012
  • 十六进制整数:要求以0x或0X开头,如:0x12

Java语言整型常量默认为int型,声明long型常量可以后加'l'或'L',如:int i1 = 600;//正确 long l1 = 888888888888L;//必须后加L否则会出错

  C语言编译好的程序为什么不能移植,如把.exe文件放到Linux下是执行不了的,一个很大很大的原因在于C语言定义的变量在不同的操作系统 上所占的大小是不一样的,声明一个int类型的变量,在Windows下面占32位,但放到Linux下面就有可能只占16位,那么这时候很可能表示的大 小就不一样了,在Windows下声明一个很大的数,在Linux下面很可能就会溢出。因此这就是C语言为什么在编译完成之后不能移植的原因。

浮点类型:

与整数类型相似,Java浮点类型有固定的表数范围和字段长度,不受平台影响

Java语言整型常量表达形式:

  • 十进制数形式,如 3.14   314.0   .314
  • 科学计数法形式,如 3.14e2   3.14E2 100E-2

浮点数常量默认为double类型,要声明一个常量为float型,则需要后面加'f'或'F',如 double d = 12345.6;//正确 float f = 12.3f;//必须加f否则会出错 

   3.5 基础数据类型转换

boolean类型不可以转换成其他的数据类型

整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

  • 容量小的类型自动转换为容量大的数据类型
    •  byte,short,char -> int -> long -> float -> double 
    •  byte,short,char 之间不会互相转换,他们三者在计算时首先转换为 int 类型
  • 容量大的类型转化为容量小的数据类型时,要加上强制类型转换符,但可能造成精度降低或溢出
  • 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算
  • 实数常量(如:1.2)默认为 double 
  • 整数常量(如:123)默认为 int 

 特殊: int 类型可以直接赋值给 byteshortchar 只要不超出它的表数范围就可以

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 = 1; //可以,byte最大为127,未超出表数范围
        byte b2 = 2;
        byte b3 = (byte)(b1+b2);//进行了运算,系统将转换为int型运算,需要强制转换符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;//强制转换会舍去小数部分(不是四舍五入)
    }
}
public class TestConvert {
    public static void main(String arg[]) {
        byte b1 = 67; 
        byte b2 = 89;
        byte b3 = (byte)(b1+b2);//int类型转换为byte类型,此时b1+b2 = 157,超出byte表数范围127
        System.out.println(b3);//可以输出-100,int占四个字节,byte占1个字节,砍掉多余的三个字节,剩下的正好是-100
double d2 = 1e200; float f2 = (float)d2;//d2为1* 10200,超出float表数范围 System.out.println(f2);//输出Infinity(无穷大),double是8个字节,float是4个字节,
                    但是浮点数中间存了一个小数点,直接砍掉是转换不过来的,因此double转换成float会出问题
} }

 (float)0,1和0.1f 区别:

float f = (float)0,1; //(float)0.1中0.1是8个字节,是把它强制转换成了4个字节的float
float f = 0.1f; //0.1f在计算机内部就是一个float类型,4个字节

 4、运算符

   4.1 自加和自减运算符

   4.2 逻辑运算符

   4.3 赋值运算符

   4.4 字符串连接符

"+"除了用于蒜素加法运算外,还可用于对字符串进行连接操作

 

int id = 800 + 90;
String s = "hello" + "world";

 

"+"运算符两侧的操作数中只要有一个是字符串(String)类型,

系统会自动将另一个操作数转换为字符串然后再进行连接。

 

int c = 12;
System.out.println("c=" + c);

 

注意:当System.out.println()进行打印的时候,无论任何类型,都自动转换为字符串

 

   4.5 表达式

 

   4.6 三目运算符

posted @ 2017-07-25 23:15  亡命鸡礼花  阅读(129)  评论(0编辑  收藏  举报