ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java基础

2021-08-22 20:03:05  阅读:110  来源: 互联网

标签:java int 基础 System 类型 println 0000 out


注释

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

  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,int,基础,System,类型,println,0000,out
来源: https://www.cnblogs.com/sp520/p/15173297.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有