JavaSE学习笔记之-----基础语法

一、标识符_关键字_数据类型

  1、标识符

字母、数字和下划线“_”和美元符“$”组成,以字母、下划线或“$”开头,大小写敏感,长度无限制。

  2、关键字

关键字都是小写,goto、const未被使用,但作为保留。



  3、变量

成员变量:方法外部、类的内部定义的变量,Java作为纯面向对象的语言,区别C/C++,不能在类外面定义变量;

局部变量:方法或语句块(if循环,for循环等等)内部定义的变量。

  4、数据类型


  一共4类8种基本数据类型:

逻辑型:boolean;文本型:char;整数型:byte,short,int,long;浮点数型:float,double。

布尔(boolean)变量:区别于C语言,Java中的布尔变量只有两种取值:true和false,C语言中是0和任何非零均可表示布尔变量。

编码格式:Java字符型使用unicode编码,这是统一码,有很多的编码例如大陆使用的GBK国标码等等,unicode是一种编码规范,以此为规范的较好实现有UTF-8、UTF-16。

Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16,三种unicode字符集之间可以按照规范进行转换。

UTF-8

UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

Unix平台中普遍支持UTF-8字符集,HTML和大多数浏览器也支持UTF-8,而window和java则支持UCS-2。

UTF-8的主要优点:

  • 对于欧洲字母字符需要较少的存储空间。
  • 容易从ASCII字符集向UTF-8迁移。

UCS-2

UCS-2是固定长度为16位的unicode字符集。每个字符都是2个字节,UCS-2只支持unicode3.0,所以不支持附加字符。

UCS-2的优点:

  • 对于亚洲字符的存储空间需求比UTF-8少,因为每个字符都是2个字节。
  • 处理字符的速度比UTF-8更快,因为是固定长度编码的。
  • 对于windows和java的支持更好。

UTF-16

UTF-16也是一种16位编码的字符集。实际上,UTF-16就是UCS-2加上附加字符的支持,也就是符合unicode4.0规范的UCS-2。所以UTF-16是UCS-2的严格超集。

UTF-16中的字符,要么是2个字节,要么是4个字节表示的。UTF-16主要在windows2000以上版本使用。

UTF-16相对UTF-8的优点,和UCS-2是一致的。

关于unicode编码参考博客:http://blog.sina.com.cn/s/blog_4b4409c30100vw9t.html


5、基本类型转换

  1>、布尔类型不能转换;

  2>、byte、short、char三者之间无法转换;三者在做运算的时候是首先将自身转成int类型,然后再做运算,例如byte=23;正确,可以把int类型直接复制给byte类型,但是超过127就不行了。

byte i = 34;
byte j = 37;
j = i+j;//错误
i和j在做运算的时候首先将自身变成int类型,相加之后结果是int类型,必须要类型转换才能复制给j;正确的是j=(byte)i+j;

  3>、大数转小数要加强制类型转换,但可能造成精度降低或者溢出。

int i = 1,j;  
float f1 = 0.1;float f2 = 123;
long i1 = 1234567,i2 = 8888888888;
double d1 = 2e18,d2=124;  
byte b1 = 1,b2 = 2,b3 = 129;  
j = j+10;  
i = i/10;  
i = i*0.1;  
char c1 = 'a',c2 = 125;  
byte b = b1-b2;  
char c = c1+c2-1;  
float f3 = f1+f2;  
float f4 = f1+f2*0.1;  
double d = d1*i+j;  
float f = (float)(d1*5+d2);  

 
 

L1正确;L2错误,0.1是double类型,要强制转换,f1=0.1F;L3错误,要加L,1234567是int类型可以表示的,但是i2要加L,i2=8888888888L;

L4正确;L5 b3溢出;L6需要先对j赋值;L7正确;L8,i*0.1是double类型,需要强制转换;L9正确;L10,错误,做运算的时候会自动转为int类型,计算结束以后也是int类型,需要强制转换为byte类型;

L11,错误,同理L10;L12,正确,两个float相加,最后赋值给float类型;L13,错误,有0.1,在运算的时候会转成double类型,赋值给float需要强制转换;

L14正确;L15正确。


6、小知识点

  1>、无符号数在Java中不存在,全是有符号的;

  2>、\u表示转换为unicode编码

  3>、数据类型一般大的可以往小的转,比如int转到char或者byte,直接把int前面3个字节砍掉;但是有有一点要注意:double类型8字节,float类型4字节,当double类型的变量存的值超过4字节能表示的最大范围,那么double是不能直接强制转换成float类型的,会出现infinity的错误。这是由于浮点类型和整数类型内部的保存方式不一样,所以这一点要注意。例如double f1=1e200(超过float4字节能表示的范围了); float f2=(float)f1.这样强制类型转换是要出错的。


----------------------------------------- -- -- -- -- -- --- -----------------------------------                                 以下为2016/7/8 更新

---------------------------------------- -- -- -- -- -- --- ------------------------------------

 一、编程格式

    1、大括号对齐;是右大括号和左大括号的那一行的行开头对齐,不是两个括号对齐;

    2、遇到左大括号 { 的时候用Tab缩进;比如上一行结尾有左大括号,下一行开头的时候就要缩进一下;

    3、程序块之间加空行;比如两个方法体之间加一个空行;

    4、并排语句加空格;两条语句之间如果一定要放在同一行,那么加个空格;

    5、一般来说运算符两端加空格,比如i = 8;

    6、写左大括号之前{ 加一个空格;

    7、成对编程。比如写了一个方法体以后,写了左大括号,先别急着写函数体,先把右大括号写出来,把框架写出来。

  二、运算符

    1、自增自减

    



++(--)在前面时先运算再取值;在后面时,先取值后运算;

      2、逻辑运算符

    只能有true和false。

    逻辑与(&)  短路与(&&),二者在结果上不会产生影响,但是会对条件判断的运算产生影响,逻辑与要计算所有的式子,短路与一旦碰到有false就直接返回false,不再计算后面的式子。

    逻辑与、或和短路与、或参考博客:http://www.cnblogs.com/livterjava/p/4684465.html

    3、字符串连接符

    “+”除了加号以外,还用于对字符串进行连接。

    

int i = 8 + 9;
String s = "hello" + "world";

    任何类型在打印的时候都会转成字符串进行打印。

System.out.println(c);
    4、三目运算符

    x?y:z

    x如果为true,这个三目运算符结果就是y,x为false时,这个三目运算符就是z。


---------------------------------------- -- -- -- -- -- --- -------------------------------------                                 以下为2016/7/11 更新

--------------------------------------- -- -- -- -- -- --- --------------------------------------

一、语句

  1、条件语句

    if 语句和switch语句和C一样。switch里面只能探测int类型,switch(i),i要是int类型,但是char、byte、short也能填,因为它们可以转换为int类型。

  2、循环语句

    for、while、do...while;

    for(int i=0;i<10;i++)这条语句合法,C里面很多编译器不能把int i放在括号里面,需要事先定义好i。

    while、do...while用法和C语言一样

  3、break、continue语句

    break跳出当前循环(只能break一层循环),即不再循环了,终止全部循环;continue是跳过该循环体continue后面的没有执行的语句(终止当前循环),直接进行下一次循环。和C一样。


二、方法

  Java的方法其实就类似C语言里面的函数,是一段用来完成特定功能的代码片段。也包含形参实参,返回值,返回类型


三、递归

  1、在一个方法内部对自身做调用

  下面例子算阶乘,5的阶乘

public class Digui {
	public static void main(String[] args) {
		System.out.println(dg(5));
	}
	
	public static int dg(int n){
		if(n == 1)
			return 1;
		else
			return n*dg(n-1);
	}	
	
}
输出 120.


用递归计算斐波那契数列,输出第7个数

public class Fab {
	public static void main(String[] args) {
		System.out.println(dg(7));	
	}


	public static int dg(int index){
		if(index == 1 || index == 2){
			return 1;
		}
			
		else{
			return (dg(index-1)+dg(index-2));		
		}
	}
}//输出13
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值