Java教程

java基础

本文主要是介绍java基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

注释

书写注释是一个非常好的习惯

  1. 单行注释://
  2. 多行注释:/* */
  3. 文档注释:/***/

标识符和关键字

​ 关键字:

java的所有组成部分都需要名字。类名、方法名、变量名都被称为标识符。

  • 所有的标识符都是以(A-Z)(a-z)$或_开始的。
  • 标识符之后可以是(A-Z)(a-z)$、_或任意数字字母的组合。
  • 不能使用关键字做为变量名或方法名
  • 大小写敏感
  • 可以使用汉字,但一般不建议使用

数据类型

java是一门强类型语言:强类型语言要求变量的使用严格符合规定,所有变量必须先定义后才能使用。(安全性高)

弱类型语言:不要求变量的使用严格符合规定,所有变量不必先定义后才能使用。如javascript

java的数据类型

其中long类型一般在数后加个L来表示区分,float类型要加F来区分。

String不是关键字,是一个类;

字节

32位的电脑只能用36位的cpu,最大内存只支持到4G,和寻址能力直接挂钩,而64位的电脑可以支持128G;

数据类型扩展及面试题

整数扩展:

​ 进制:

  1. 二进制:0b开头
  2. 十进制
  3. 八进制:0开头
  4. 十六进制:0x开头

浮点数扩展:

  1. float类型和double类型相同的小数可能是不相等的如:

    	   float f=0.1f;
            double b=0.1;
            System.out.println(f==b);//输出结果为flase
            System.out.println(f);//输出结果为0.1
            System.out.println(b);//输出结果为0.1
    
  2. 如果float足够大,值+1和以前相等

    float t=90811111112542358855655476f;
    double k=t+1;
    System.out.println(t==k);//输出结果为true
    

究其原因,是因为浮点数能表示的字长是有限的,离散的,一般会存在舍入误差,其结果只是个约数,接近但不等于。

因此,不能使用float来表示银行等和钱的业务,因为存在误差。

最好完全避免使用浮点数来进行比较。

要表示银行的业务,可以用BigDecimal数学工具类来操作。

字符扩展:

1.字符可以强转成int,所有的字符本质上还是数字,有编码表和其对应。

2.转义字符:

  • \u:转义为Unicode编码表示的方法(16进制):如

    char c5='\u0061';
    System.out.println(c5);//16进制的0061=十进制的97,所以输出a
    
  • \t:水平制表符

  • \n:换行

布尔扩展:

boolean flag=true;
if (flag){}
if (flag=true){}//与上行代码等价

类型转换

java是强类型语言,所以有些运算需要用到类型转换。

运算过程中,不同的数据类型要先转换成同一种类型的才能计算,由低到高自动转,由高到低强转(会损失数据)

转换分强制类型转换和自动类型转换

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 把高容量转换为低容量要用强制类型转换(加括号)
  4. 尽量避免内存溢出或者精度问题
  5. 在计算大数值时,特别要注意精度的问题,如下例子
int money=10_0000_0000;//java7的新特性,中间加‘—’可以更清晰
int b=20;
long total;
total=b*money;
System.out.println(total);
//输出结果为-1474836480,究其原因是因为b和money都是int类型的,它们的积也是int类型,超过了int类型的最大值,所以数据会溢出

下面的例子就没问题了

int money=10_0000_0000;
int b=20;
long total;
total=(long)b*money;
System.out.println(total);

变量

变量:可以变化的量

java是一种强类型语言,每个变量都要声明其类型。

java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。

注意:

  1. 每个变量都有类型,可以是基本类型,也可以是引用类型。
  2. 变量名必须是合法的标识符。
  3. 变量声明是一个完整的语句,因此每一个的声明必须以分号结束。

变量的作用域:

1. 类变量:加static关键字来定义,和实例变量差不多,可用类名直接调用。
2. 实例变量:在方法体外、类内部创建的变量,需要使用对象来调用,可以不初使化,输出类型的默认值。
3. 局部变量:局部变量是指在一个方法体中有效,跳出这个范围就无效了。

常量:初使化后不能再改变值,不会变动的值。

所谓常量可以被理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

常量一般全用大写。

修饰符不区分顺序:如下两行代码是一样的

 static final double PI=3.14;
 final static double PI=3.14;

变量的命名规范:(类首字母大写,变量和方法名首字母小写,并遵循驼峰命名法原则,常量大写或加下划线)

java的运算符

算数运算符:+ - * / % ++ --

赋值运算符:=

关系运算符:> < >= <= == != instanceof

逻辑运算符:&& || !

位运算符: & | ^ ~ >> << >>>

条件运算符: ? :

扩展赋值运算符:+= -= *= /=

long a=12312142124123123L;       
int b=12;        
short c=43;        
byte d=19;        
System.out.println(a+b);//long       
System.out.println(c+b);//int        
System.out.println(d+c);//int

println参数值的整形类型最小是int型,所以short类型和byte类型的和为int类型。

自增自减运算符

++ --

  • a++:先赋值,在自增
  • ++a先自增,在赋值
  • --同理

逻辑运算之短路运算

//短路运算,与运算中如果第一个就是false,后面就不在判断了
int c=4;
boolean d=c<4&&(c++<4);
System.out.println(d);
System.out.println(c);//输出4,可见c++并没有执行

位运算

  A=0011 1100  B=0000 1101--------------------A&B=0000 1100 
 //与运算:全是1才得1,其他得0A|B=0011 1101  
//或运算:全是0得0,否则为1A^B=0011 0001  
//异或:相同为0,不同为1~B =1111 0010  
//非:取反

实例:

Integer a=0b0011_1100;
Integer b=0b0000_1101;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(a&b));
System.out.println(Integer.toBinaryString(a|b));
System.out.println(Integer.toBinaryString(a^b));
System.out.println(Integer.toBinaryString(~b));

输出:
111100
1101
1100
111101
110001
11111111111111111111111111110010
//<<:左移>>:右移>>>:无符号右移 
       /*    
* 0000 0001 :1    
* 0000 0010 :2   
* 0000 0011 :3    
* 0000 0100 :4    
* ...    
* 0000 1000:8   
* ...    
* 0001 0000:16  
 *     
*从上面可以看出,左移一位是*2,右移一位是/2    
* 面试题:如何用最快的方法算出2*8  
* 2*8=2*2*2*2=16    
* 由2左移3位就可以了,如下代码   
* */    
public static void main(String[] args) {      
  System.out.println(2<<3);    
}
//>>:带符号右移。正数右移高位补0,负数右移高位补1。>>>:无符号右移。无论是正数还是负数,高位通通补0。

字符串连接符+

如果输出的东西是字符串与数值用“+”连接,一般会直接转换成字符串类型,下面的情况除外,""空字符串在后面会先将前面的相加在拼接。

//字符串连接符+
int a=10;int b=20;
System.out.println(""+a+b);//输出1020
System.out.println(a+b);//输出30
System.out.println(a+b+"");//输出30

包机制

为了更好的组织类,java提供了包机制,用于区别类名的命名空间(可以看成是一个个的文件夹)

一般利用公司域名倒置作为包名:如com.baidu.www

用import来导入包,可以用*通配符来批量导入

JavaDoc生成文档

用javadoc命令生成jdk文档,编辑好源文件,用javadoc命令可以生成jdk文档,-encoding UTF-8和_charset UTF-8 是设置编码格式和字符集,防止中文乱码。

用idea生成JDK文档:

这篇关于java基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!