Java基础语法

Posted zcq-test

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础语法相关的知识,希望对你有一定的参考价值。

Java的基本语法

Java注释

? java中有三种注释

单行注释: //注释内容

多行注释:/* 注释内容 */

文档注释: /** 注释内容 */

? 其中文档注释可以利用javadoc.exe生成API文档

/*
 * 实现步骤:
 * 1.定义一个类 class
 * 2.编写程序执行的入口方法,main主方法
 * 3.通过输出语句System.out.println()将信息”HelloWorld!”打印在控制台上
 */
// 定义一个类 class
class HelloWorld {
	// 编写程序执行的入口方法,main主方法
	public static void main(String[] args) {
		// 通过Java提供的输出语句, 将信息”HelloWorld!”打印在控制台上
		System.out.println("HelloWorld!");
	}
}

其实注释就是做记录解释代码,建议大家今后在编码时先写思路、分析、步骤、然后再写代码。把思路、分析、步骤使用注释放在源码中。

Java关键字

? 关键字是被java语言赋予了特殊含义,具有专门用途的单词。比如 public、class、static 等这些都是设定好的。

技术图片

? 这些关键字需要背诵吗?

? 我们HelloWorld.java案例中用到过哪些关键字?

标识符

? 标识符就是名称的意思,所有的名称都统称为标识符。java中经常要定义类、方法、变量(后面会学习到),在定义它们时总要给他们取名字,这些名字就是标识符。

? 标识符组成元素:

? *英文:a-zA-Z

? *数字: 0-9

? *符号: _ 与 $

? 标识符规则:

? *不能以数字开头

? *不可以使用关键字

? *遵循驼峰法则,比如 HelloWorld

? *尽量达到见名知意

数据

程序概述

软件是什么?

? 其实软件就是用来处理数据的。

? 软件的组成:

? *数据

? *处理数据的逻辑

? 程序 = 数据 + 逻辑

什么是数据?

? 用电商来举例子,用户是数据,商品也是数据。

处理数据的逻辑又是什么呢?

? 购买商品的过程就是处理数据的逻辑

? 程序的开发离不开数据,说白了程序就是处理数据的。通常数据会发生变化,而处理数据的逻辑不会发生改变。例如商品的数量、种类是会变化的,而买的流程是不会改变的。

数据类型

? 生活中的数据也是有类型的,例如 人名:汉字或者英文,年龄:数字

? 那么java中有哪些数据类型?他们分别是怎么表示的?

? java是强类型语言,对每一种数据都对应了明确的数据类型。下面是java中的数据类型

技术图片

? 基本数据类型是java语言中内置的类型,分别是 整数类型、小数类型、字符类型、布尔类型。这四类基本类型是最简单、最基础的类型。

? 引用数据类型是强大的数据类型,它是基于基本数据类型创建的。JavaSE中提供了一个超级类库,类库中包含了近万种引用数据类型。不过现在我们先要学习的是基本类型!

常量

? Java中的数据量分为常量和变量,我们先来学习常量!

? 常量就是不变的数据量,例如666就是常量。任何数据量都有其类型,那么这个666又是什么类型呢?没错,就是整数类型!!!

? *整数类型: 18 、666 、1888等

? *小数类型: 1.8 、6.66、3.1415926等

? *字符类型: ‘a‘ 、‘A‘、‘0‘ 、‘中’等。(注意: 字符型是用 ‘ ‘ 包裹,并且里面只能写一个)

? *布尔类型: true(真)、false(假)

? *字符串类型: “我爱java”、“HelloWorld!!!”、“我爱编程,编程使我快乐!”

? ?字符串String 是一种应用类型,我们先了解作为常量的使用方式

? ?字符串必须用 " " 包裹,里面可以随意写东西

? 回顾我们HelloWorld案例,其中System.out.println("HelloWorld!!!")的圆括号里面是什么类型?

? 下面我们通过代码实际感受一下:

/*
*	常量的演示
*/
public class Demo{
    public static void main(String[] args){
        // 整数类型
        System.out.println(666);
        System.out.println(1888);
        // 小数类型
        System.out.println(1.8);
        System.out.println(3.1415926);
        // 布尔类型
        System.out.prinltn(true);//真
        System.out.println(false);////字符类型
        System.out.println(‘A‘);
        System.out.println(中‘);
        //字符串类型
        System.out.println("我爱编程");
        System.out.println("编程是我快乐");
    }
}

变量

变量的概述

? 前面我们已经学过了常量,现在来学习下变量。在java中变量的应用比常量应用要多很多,所以变量是非常重要的知识点!

? 什么是变量?

变量是一个内存中的小容器,什么是容器?例如 : 水杯是容器,用来装水;衣柜是容器,用来装衣服。那么变量是装什么的呢?答案是数据! 结论:变量是内存中装数据的小容器,你只能用它来存数据和取数据。
计算机的储存单元

? 变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机的存储设备最小信息单元叫"位(bit)",我们又称之为”比特位“,通常用小写字母b表示。而计算机最小的存储单元叫"字节(byte)",通常用大写字母B表示,1个字节由8个位组成。

? 操作系统分派的最小存储空间是1个字节,而不是1位。

? 计算机除了字节与位外还有哪些存储单位,大家一起来看看!

? 1B(字节) = 8 bit

? 1KB = 1024B

? 1MB = 1024KB

? 1GB = 1024MB

? 1TB = 1024GB

? 1PB = 1024TB

基本类型之4类8种

? 衣柜不能用来装水,水杯也不能用来装衣服。这说明不同的容器装不同的物品。变量也是如此,在创建变量时需要指定变量的数据类型,例如 整型变量、浮点型变量等。

? 结论:变量必须要有明确的类型,什么类型的变量装什么类型的数据

? 水杯是用来装水的,那么装多少水呢?一吨?我们知道水杯在创建时不只确定了要装的是水(数据类型),而且还能确定装多少水(数据类型的具体种类)。变量也是如此,需要指定变量能装什么类型的数据,同时也要确定能装多大的数据

? java的基本类型一共4类,把这四类展开以后就是8种基本数据类型,我们今后写程序时用的是这8种基本类型,这8种基本类型也指定了范围。

技术图片

char 字符型 ,2个字节 ,用单引号表示 ‘ ‘ ,刚好容纳一个汉字,注意:里面只能放一个

boolean 布尔型 ,一个字节 0000 0001 最低为表示,取值(布尔值) :true(真) 和 false(假)

? E : 123E5 = 123 * 10^5 = 12300000 , 123E-5 = 123 * 10^-5 = 0.0123

? e : 自然常数,约 2.718281828

常量与类型

? 我们前面说666是整数常量,但它是byte、short、int、long里面的哪一种呢?下面我们就来聊聊这一常量类型的问题。

? ?在Java中默认的整数类型是int类型

? 例如: 666 、 888

? ?在Java中如果是long类型的值后面需要加L(大小写都可以,建议大写)

? 例如: 13456789123L 、100L

? ?在Java中小数默认是double类型

? 例如: 1.888、3.123456

? ?在Java中如果是float类型的值后面需要加上F(大小写都可以建议大写)

? 例如: 1.5F、6.8888F

定义变量(创建变量)

? 定义变量的语法:

? 数据类型 变量名 = 数据值;

? int a = 100;(用分号结束)

? 解释int a = 100; 把值为100的整数赋值给变量a,其中100在int类型的取值范围以内。

? 练习:要求:写出代码运行起来,并且能够解释每行代码的意思。

public class Variable{
    public static void main(String[] args){
        int a = 100;
        System.out.println(a);
        double b = 7.89;
        System.out.println(b);
        char c = 猿‘;
        System.out.println(c);
        String d = "今天,又是充满希望的一天!";
		System.out.println(d);
		boolean e = true;
		System.out.println(e);
    }
}	

? 变量使用的注意事项:

? 局部变量

? 1.我们使用变量的时候要注意,要满足变量的使用规则我们才能使用

? 2.定义变量时可以先不赋值,使用时在赋值。不赋值不能使用

public class Demo2{
    public static void main(String[] args){
    	int x;//先定义一个变量x
    	x = 20;//把20赋值给这个x
    	System.out.println(x);//这一步是打印x,这也就是在这一行用到了x
	}
}	

? 3.变量不可重复定义

public class Demo3{
    public static void main(String[] args){
        int i = 10;
        double i = 1.5;// 这里 i 就重复了,会发生编译错误  
    }
}

数据类型转换

类型根据字节数由小到大排列:byte - short - int - float - long - double

两种转换方式:

? 1.显示转换(强制转换)

? 小范围数据类型 变量 = 大范围数据类型;

? 如:

? int n = (int)6.7;

? 或者

? double l = 3.14;

? int t = (int)l;

? 强制转换注意: 需要在值的前面加上对应的数据类型

? 2.隐式转换(自动转换)

? 大范围数据类型 变量 = 小范围的数据类型;

? 如:

? double d = 10000;

? 或者

? int i = 100;

? double d2 = i;

运算符

算术运算符
运算符运算规则范例结果
+ 正号 +3 3
+ 2+3 5
+ 连接字符串 “中”+“国” “中国”
- 负号 int a=3;-a -3
- 3-1 2
* 2*3 6
/ 5/2 2
% 取模 5/2 1
++ 自增 int a=1;a++/++a 2
-- 自减 int b=3;a--/--a 2

? 使用算术运算符时要注意:

? 1.加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串

public class Demo4{
    public static void main(String[] args){
        System.out.println("中" + "国");//打印出 中国
    }
}

? 2.除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除

System.out.println(3/2);// 1
System.out.println(3.0/2);//1.5

? 3.“%”取模(取余数),小数取余没有意义。结果符号与被取余符号相同

System.out.println(5%3);// 5 / 3 = 1 ... 2 所以结果时 2
System.out.println(3%5);// 一个小的数对一个大的数取模,就等于它本身 3
算术运算符 ++ , --的使用

我们来看一段代码

int a = 3;
int b = 3;
a++;
b--;
System.out.println(a);//4
System.out.println(b);//3

? 上面的代码输出结果a的值为4,b的值为2

? 这说明a与b的值在原有的基础上发生了改变,改变的值为1.

? ++运算符:会在原有值得基础上自增1

? --运算符:会在原有值得基础上自减1

我们再来看一段代码

int a = 3;
int b = 3;
++a;
--b;
System.out.println(a);//4
System.out.println(b);//3

? 上面的代码输出结果a的值为4,b的值为2

? 说明 ++,-- 在单独使用并且不参与操作符时,不管在前还是在后结果是一样的。

接下来我们参与操作符

int a = 3;
int b;
b = a++ + 10;
System.out.println(a);//4
System.out.println(b);//13

? 上面代码的输出结果a值为4,b值为13;

? 强调:当++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1

再介绍下++,--运算符前置时,参与运算操作的变化,我们来看一段代码 :

int a = 3;
int b;
b = ++a + 10;
System.out.println(a);//4
System.out.println(b);//14

? 强调: ++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作

赋值运算符

我们来学习一下赋值运算符,赋值运算符就是为变量赋值的符号,赋值运算符的使用看下图:

运算符运算规则范例结果
= 赋值 int a=2 2
+= 加后赋值 int a=2,a+=2 4
-= 减后赋值 int a=2,a-=2 0
*= 乘后赋值 int a=2,a*=2 4
/= 整除后赋值 int a=2,a/=2 1
%= 取模后赋值 int a=2,a%=2 0

注意:诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。

写一个代码,我们看一下赋值运算符的使用

/*
 * 赋值运算符
 * +=, -=, *=, /=, %= : 
 * 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的
 * 注意:赋值运算符左边必须是变量
 */
public class Demo5{
	public static void main(String[] args) {
		byte x = 10;
		x += 20;// 相当于 x = (byte)(x+20);
		System.out.println(x);// 30
	}
}
比较运算符

比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false 。

运算符运算规则范例结果
== 相等于 4==3 False
!= 不等于 4!=3 True
< 小于 4<3 False
> 大于 4>3 True
<= 小于等于 4<=3 False
>= 大于等于 4>=3 True

这里需要注意一下:

? *赋值运算符的 = 符号与比较运算符的 == 符号是有区别的,如下:

? 1.赋值运算符的 = 符号,是用来将 = 符号右边的值,赋值给 = 符号左边的变量;

? 2.比较运算符的 == 符号,是用来判断== 符号左右变量的值是否相等的

我们通过下面的一段代码,我们演示一下这个注意事项 :

int a = 3;
int b = 4;
System.out.println( a=b );// 4
System.out.println( a==b );// true
逻辑运算符

逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false

运算符运算规则范例结果
& false&true False
| false|true True
^ 异或 true^flase True
! !true Flase
&& 短路与 false&&true False
|| 短路或 false||true True

看完图后,我们来看一下逻辑运算符的常规使用方式:

? 1.逻辑运算符通常连接两个其他表达式计算后的布尔值结果

? 2.当使用短路与或者短路或时,只要能判断出结果则后边的部分就不再判断

我们通过代码演示一下:

boolean b = 100>10;
boolean b2 = false;
System.out.println(b&&b2); // 打印结果为 false
System.out.println(b||b2); //打印结果为 true
System.out.println(!b2); //打印结果为 true
System.out.println(b && 100>10); //打印结果为 true,本行结果的计算方式稍后讲解运算符优先级时解答

好了,我们来总结一下运算符的结果规律吧 :

? 1.短路与&&:参与运算的两边数据,有false,则运算结果为false

? 2.短路或||:参与运算的两边数据,有true,则运算结果为true

? 3.逻辑非! : 参与运算的数据,原先是true则变成false,原先是false则变成true

进制转换

? 二进制

? 八进制

? 十六进制

位运算

左移 : <<

int a = 4 << 2; // 4 * 2^2 = 16
int b = 8 << 3; // 8 * 2^3 = 64
// 总结: int x  = y << z 时相当于 y * 2^z

右移: >>

int a = 4 >> 2; // 4 / 2^2 = 1;
int b = 8 >> 3; // 8 / 2^3 = 1;
// 总结 : int x = y >> z 时相当于 y / 2^z

无符号运算 >>>

int a = 4;
System.out.println(a >>> 2); // 1
int b = -4;
System.out.println(b >>> 2); // 1073741823
源码 
1000 0000 0000 0000 0000 0000 0000 0100
反码(高位不变低位相反)
1111 1111 1111 1111 1111 1111 1111 1011
补码 (反码 + 1)
1111 1111 1111 1111 1111 1111 1111 1100
右移两位
0011 1111 1111 1111 1111 1111 1111 1111
直接计算移动后的值
2 ^ 29 + 2^28 + 2^27 + ...+ 2^0 

三元运算符(三目运算)

? 接下来我们要学习的三元运算符与之前的运算符不同。之前学习的均为一元或者二元运算符。元即参与运算的数据

? 格式:

? 数据类型 变量名 = (条件表达式)?表达式1:表达式2;

? 表达式:通俗的说,即通过使用运算符将操作数联系起来的式子,例如 :

? 1.3+2,使用算数运算符将操作数联系起来,这种情况,我们称为算数表达式

? 2.3>2,使用比较运算符(也称为条件运算符)将操作数联系起来,这种情况,我们称为条件表达式

? 三元运算符运算规则:

? 先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2

通过代码演示,我们来学习下三元运算符的使用 :

方式一:
	System.out.println( 3>2 ? “正确” : “错误” ); 
// 三元运算符运算后的结果为true,运算结果为表达式1的值“正确”,然后将结果“正确”,在控制台输出打印

方式二:
	int a = 3;
	int b = 4;
	String result = (a==b) ? “相等” : “不相等”;  
	System.out.println(result);
//三元运算符运算后的结果为false,运算结果为表达式2的值“不相等”,然后将结果赋值给了变量result

方式三:
	int n = (3>2 && 4>6) ? 100 : 200;
	System.out.println(n);
	//三元运算符运算后的结果为false,运算结果为表达式2的值200,然后将结果200赋值给了变量n

小练习:

  1.A和B点相距500公里,同时从A和B对向各开出1列火车,经过30分钟后,在距离A和B的中点50公里的地方相遇。问A火车和B火车的速度各为多少公里每小时
  
  2.一缸水,用去二分之一和5桶,还剩下30%,问这缸水有多少桶
  
  3.一根钢管长10米,第一次截去十分之七,第二次又截去剩下的三分之一,问还剩下多少米
  
  4.修筑一条公路,完成了全长的三分之二后,距离中间点为16.5千米,这条公路全长多少千米
  
  5.山羊有50只,绵羊比山羊的五分之四多3只,问绵羊多少只
  
  6.输入圆的半径,求这个圆的周长和面积
  
  7.输入正方体的边长,求体积和表面积
  
  8.问题:“今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?”

以上是关于Java基础语法的主要内容,如果未能解决你的问题,请参考以下文章

Java 基础语法方法的使用

7.JSP基础语法,指令和标签以及Java Bean

JSP简介和基础语法

Java Web学习总结JSP

Java Lambda

如何进行 Java 代码阅读分析?