【暑假陪你一起学习】Java基础知识

Java基础知识

第一个Java程序

运行环境:IDEA macOS

在idea中新建一个项目

进入后右键src——>new——>java class
在这里插入图片描述

创建了一个demo1的Java 文件

public class demo1{
  public static void main(String[] args){
    System.out.print("Hello,world!");
  }
}

敲完这个代码后,点击绿色的小三角进行编译运行
在这里插入图片描述

执行成功后就会发现,下方的控制台出现了一个hello world字样
在这里插入图片描述

那么就对于这个应用程序进行分析

首先Java是区分大小写的,如果你将其中的System.out.print(“Hello word”);写成了system.out.print(“Hello word”); 则程序将无法正常运行

对于整个代码进行一个解析(如若看不懂,可以先记下这个专业术语,后面会对于这方面的内容更加深刻的了解)

  • 关键字public 被称之为访问修饰符,这些修饰符主要用于控制程序的其他部分对这段代码的访问级别

  • 关键字class 表明了Java程序中的全部内容都包含在这个类当中,类是构建所有Java应用程序的构建模块

  • 关键字class后面紧跟着类的名字,(类名字就是你创建Java class时取的名字)。对于名字有着严格的要求,名字必须以字母开头,后面可以是字母或者数字,但不能是Java的关键字(比如说public class )

  • 运行已编译的程序时(就是当你点击了绿色的小三角之后),Java虚拟机会将从指定类中的main方法开始执行

    也就是从public static void main(String [] args)开始执行

    注意:

    每个Java应用程序中都必须有一个main方法

    每个Java应用程序中都必须有一个main方法

    每个Java应用程序中都必须有一个main方法

  • System.out.print(“Hello world”);是一个输出语句,在控制台输出显示Hello world,在这里,使用了System.out对象并调用了它的print方法(相当于是调用了函数)

  • 在Java中,每个句子的结尾都是以分号作为结尾

注释

和大多数程序设计语言一样,Java的注释不会被执行。

注释分为三类:

  1. 单行注释 //

  2. 多行注释。 /**/

花里胡哨的注释:

/*
 *                        _oo0oo_
 *                       o8888888o
 *                       88" . "88
 *                       (| -_- |)
 *                       0\  =  /0
 *                     ___/`---'\___
 *                   .' \\|     |// '.
 *                  / \\|||  :  |||// \
 *                 / _||||| -:- |||||- \
 *                |   | \\\  - /// |   |
 *                | \_|  ''\---/''  |_/ |
 *                \  .-\__  '-'  ___/-. /
 *              ___'. .'  /--.--\  `. .'___
 *           ."" '<  `.___\_<|>_/___.' >' "".
 *          | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *          \  \ `_.   \_ __\ /__ _/   .-` /  /
 *      =====`-.____`.___ \_____/___.-`___.-'=====
 *                        `=---='
 * 
 * 
 *      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 *            佛祖保佑       永不宕机     永无BUG
 */

/*
 * ......................................&&.........................
 * ....................................&&&..........................
 * .................................&&&&............................
 * ...............................&&&&..............................
 * .............................&&&&&&..............................
 * ...........................&&&&&&....&&&..&&&&&&&&&&&&&&&........
 * ..................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..............
 * ................&...&&&&&&&&&&&&&&&&&&&&&&&&&&&&.................
 * .......................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.........
 * ...................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...............
 * ..................&&&   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&............
 * ...............&&&&&@  &&&&&&&&&&..&&&&&&&&&&&&&&&&&&&...........
 * ..............&&&&&&&&&&&&&&&.&&....&&&&&&&&&&&&&..&&&&&.........
 * ..........&&&&&&&&&&&&&&&&&&...&.....&&&&&&&&&&&&&...&&&&........
 * ........&&&&&&&&&&&&&&&&&&&.........&&&&&&&&&&&&&&&....&&&.......
 * .......&&&&&&&&.....................&&&&&&&&&&&&&&&&.....&&......
 * ........&&&&&.....................&&&&&&&&&&&&&&&&&&.............
 * ..........&...................&&&&&&&&&&&&&&&&&&&&&&&............
 * ................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&............
 * ..................&&&&&&&&&&&&&&&&&&&&&&&&&&&&..&&&&&............
 * ..............&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&....&&&&&............
 * ...........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&......&&&&............
 * .........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.........&&&&............
 * .......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...........&&&&............
 * ......&&&&&&&&&&&&&&&&&&&...&&&&&&...............&&&.............
 * .....&&&&&&&&&&&&&&&&............................&&..............
 * ....&&&&&&&&&&&&&&&.................&&...........................
 * ...&&&&&&&&&&&&&&&.....................&&&&......................
 * ...&&&&&&&&&&.&&&........................&&&&&...................
 * ..&&&&&&&&&&&..&&..........................&&&&&&&...............
 * ..&&&&&&&&&&&&...&............&&&.....&&&&...&&&&&&&.............
 * ..&&&&&&&&&&&&&.................&&&.....&&&&&&&&&&&&&&...........
 * ..&&&&&&&&&&&&&&&&..............&&&&&&&&&&&&&&&&&&&&&&&&.........
 * ..&&.&&&&&&&&&&&&&&&&&.........&&&&&&&&&&&&&&&&&&&&&&&&&&&.......
 * ...&&..&&&&&&&&&&&&.........&&&&&&&&&&&&&&&&...&&&&&&&&&&&&......
 * ....&..&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...........&&&&&&&&.....
 * .......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..............&&&&&&&....
 * .......&&&&&.&&&&&&&&&&&&&&&&&&..&&&&&&&&...&..........&&&&&&....
 * ........&&&.....&&&&&&&&&&&&&.....&&&&&&&&&&...........&..&&&&...
 * .......&&&........&&&.&&&&&&&&&.....&&&&&.................&&&&...
 * .......&&&...............&&&&&&&.......&&&&&&&&............&&&...
 * ........&&...................&&&&&&.........................&&&..
 * .........&.....................&&&&........................&&....
 * ...............................&&&.......................&&......
 * ................................&&......................&&.......
 * .................................&&..............................
 * ..................................&..............................
 */

  1. 文档注释 可以自动生成文档这种注释是以/**开始,以 */结束

数据类型

基本数据类型:

1.整型

整型用于表示没有小数部分的数值,允许是负数

类型存储要求取值范围
int4字节-21478483~2147483647
short2字节-32768~32767
long8字节-9223372036854775808~9223372036854775807
byte1字节-128~127

常用的是int型

如果数据比较大,则采用long类型

byte和short类型主要用于特定的应用场合,例如:底层文件处理或着需要控制占用存储空间量的大数组

在Java中,整型的范围与运行Java代码的机器无关

这就解决了软件从一个平台移植到另一个平台当中出现的诸多麻烦问题

  • 长整型数值有一个后缀L或者l(一般不要小写英文字母L,因为看上去像1,程序可读性会显得略微差劲)

  • 十六进制有一个前缀0x(数字0)或者Ox(字母O)

  • 八进制有一个前缀0,例如010对应八进制中的8,可以看出八进制的表示法容易让人混淆,建议少使用八进制的常数

对于比较大的数字:百万、千万,我们数那后面的0时都会感到一阵头疼,毕竟0这么多,这要是钱

img

Java 7 开始,为数字下加入下划线,如1_000_000(一百万),下划线只是为了能够方便读,Java编译器会去除这些下划线

2. 浮点类型

在Java中有两种浮点型

类型存储需求取值范围
float4字节±3.40282347E+38F(有效位数为6~7位)
double8字节±1.797693134862631570E+308(有效位数为15位)

double表示这种类型的数值精度是float类型的两倍,绝大多数情况下采用的是double类型。

float类型的数值都有一个后缀F或f(如,3.14F)

没有后缀F的浮点数默认为double类型

警告⚠️:浮点数值不适合用于无法接受舍入误差的金融计算中,如果在数值计算中不允许有任何舍入误差,就应该使用BigDecimal类

3.char类型

char类型原本用于表示单个字符。

但如今,有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值

char类型的字面量值要用单引号括起来,例如,'A’是编码值为65所对应的字符常量。

4. boolean类型

boolean类型有两个值:false和true,判断逻辑条件

整型值和布尔值之间不能进行相互转换

变量

在Java中,每个变量都有一个类型。

声明变量时,变量的类型位于变量名之前

比如:

double salary;

int age;

boolean right;

我们可以通过例子观察到每一个变量声明都是以;结尾

变量名也有严格的命名规则:

变量名必须是一个以字母开头并由字母或数字组成的序列

Java中的字母包含了’A’~ ‘Z’,‘a’~‘z’ ,’ _’’ '$'或在某种语言中表示字母的任何Unicode字符

警告⚠️:Java不能够使用关键字作为变量名

最好是一行就是一个变量,便于后期的维护和可读

变量初始化

声明一个变量之后,必须用赋值语句对变量进行初始化

如果不进行初始化,Java编译器会报错的

对于一个声明过变量进行赋值格式:

变量名 = 值;

int age=14;

在Java中可以将声明变量放在任何地方

常量

在Java中,利用关键字final指示常量

关键字final表示这个变量只能被赋值一次,一旦被赋值后就不可以进行更改

public class demo2{
  public static void main(String[] args){
    final double salary=1500.5;
    final int age=25;
    System.out.println("The salary is "+salary+",and the age is "+age );
  }
}

在Java中,如果想要一个常量在类中的多个方法中使用,通常叫这些常量为类常量。

一般常用static final设置一个类常量。

示例:

public class demo3{
  public static final double pi=3.14;
  public static void main(String[] args){
    double r=5;
    System.out.println("The area of this circle is "+r*r*pi);
  }
}

类常量的定义位于main方法的外部

如果一个常量被声明为public,那么其他类的方法也可以使用这个常量

运算符

在Java中,使用算术运算符+ - * /表示加、减、乘、除运算。

当参与/运算的两个操作数都是整数时6,表示整数除法,否则表示为浮点除法;

整数的求余用%来计算,例如15/2等于7,15%2等于1,15.0%2等于7.5

整数被0除会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果

数学函数与常量

在math类,包含了各种各样的数学函数

如果想要计算一个数值的平方,可以使用sqrt方法

public class demo4{
   public static void main(String[] args){
     double x=4;
     double y=Math.sqrt(x);
     System.out.println("y");
   }
}
小知识

Java中没有幂运算,只能借助Math类中的pow方法。

public class demo5{
  public static void main(String[] args){
    double x=2;
    int a=3;
    double y=Math.pow(x,a);
   //将x的a次幂赋值给y
    System.out.println("The number of "+x +a+"次幂的值为"+y);
  }
}

数值之间的转换

在这里插入图片描述
数值类型之间的合法转换

实体箭头表示无信息丢失转换,虚箭头表示精度损失

就比如一个较大的整数,包含位数比float类型所表达的位数多

当这个整型数值转换成float类型时,将会得到同样大小的结果,但是失去了一定的精度

关于转换的相关总结:

  • 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。

  • 如果其中一个操作数是float类型,另一个操作数将会转换为float类型。

  • 如果其中一个操作数是long类型,另一个操作数将会转换为long类型。

强制类型转换

在必要的时候,int类型的值将会自动地转换为double类型。

但另一方面,有时也需要将double转换成int。

在Java中,允许进行这种数值之间的类型转换。

当然,有可能会丢失一些信息。在这种情况下,需要通过强制类型转换(cast)实现这个操作

强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名

public class demo5{
  public static void main(String []args){
    double x=9.255int y=(int)x;
    System.out.println("the x is "+x+"the y is "+y);
  }
}

如果想对浮点数进行舍入运算,以便得到最接近的整数(在很多情况下,这种操作更有用),那就需要使用Math.round方法:

double x=9.997;

int y=(int)Math.round(x);

这个时候y是10,调用round方法时,仍然需要使用强制转换类型(int)

结合赋值和运算符

编程讲究的是less is more (少即是多)

在进行运算之时,往往有很多简写的形式

比如:

x=x+4;
x+=4;
//这两者是等价的

自增与自建运算符

i=i+1;
 i++++i;
//等价的 
  i=i-1;
  i----i;
  
  //++在前,先加再赋值
  //++在后,先赋值再加

关系和布尔运算符

Java中检验是否相等,可以用==两个等号,不相等是!=

例如:



int x=2;
int y=2;
x==y;

true
  
int z=3;
x!=3;

true

此外还有<(小于)、>(大于). <=(小于等于) >=(大于等于)

逻辑运算符

使用&&表示逻辑与运算符

两者都为真,才是true,一者为假,则为false

使用||表示逻辑或运算符

两者中有一个为真,则为true

三元运算符
Java中支持 条件 ?情况1  :情况2    这种格式的三元运算符
  当满足条件时,执行情况1
  若不满足条件,则执行情况2
  例如:
  x<y ?x:y
    x与y进行比较,返回比较小的那一个

位运算符

处理整型类型时,可以直接对组成整型数值的各个位完成操作

位运算就是直接对整数在内存中的二进制位进行操作

位运算符包括:

符号描述运算规则
&两个位都为1时,结果才为1
|两个位都为0时,结果才为0
^异或两个位同时为0,相异为1
取反0变1,1变0
<<左移各二进位全部左移若干位,高位丢弃,低位补0
>>右移各二进位全部右移动若干位,对于无符号数,高位补0,有符号数,各个编译器处理方式不相同
1.按位与运算符(&)

定义:参加运算的两个数据,按二进制位进行"与"运算。

运算规则:

0&0=0  0&1=0  1&0=0  1&1=1

总结:两位同时为1,结果才为1,否则结果为0。

例如:3&5 即 0000 0011& 0000 0101 = 0000 0001,因此 3&5 的值得1。

注意:负数按补码形式参加按位与运算。

2.按位或运算符(|)

定义:参加运算的两个对象,按二进制位进行"或"运算。

运算规则:

0|0=0  0|1=1  1|0=1  1|1=1

总结:参加运算的两个对象只要有一个为1,其值为1。

例如:3|5即 0000 0011| 0000 0101 = 0000 0111,因此,3|5的值得7。

注意:负数按补码形式参加按位或运算。

3.异或运算符(^)

定义:参加运算的两个数据,按二进制位进行"异或"运算。

运算规则:

0^0=0  0^1=1  1^0=1  1^1=0

总结:参加运算的两个对象,如果两个相应位相同为0,相异为1。

4.取反运算符 (~)

定义:参加运算的一个数据,按二进制进行"取反"运算。

运算规则:

~1=0
~0=1

总结:对一个二进制数按位取反,即将0变1,1变0。

5.左移运算符(<<)

定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

6.右移运算符(>>)

定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。

操作数每右移一位,相当于该数除以2。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值