初学Java------Java的基本程序设计结构(2)

本文详细介绍了Java编程中的变量声明与初始化、常量使用、算术运算、类型转换、逻辑与位运算、字符串操作、输入输出、if和switch语句等基础知识,为Java初学者提供了全面的学习指南。

4.变量与常量

=======

4.1 声明变量


格式:数据类型   变量名        例:

int age;

double salary;

long earthPopulation;

boolean done;

从中可以看出,每个声明都以分号结束。声明是一条完整的语句,分号在这里是必须加的。

tip:$是一个合法的Java字符,但是不要在代码中使用这个字符,它只在Java编译器或其他工具生成的名字中。

可以在一行中声明多个变量:

int i ,j, k; //不提倡这种风格

逐一声明每个变量提高代码的可读性。

4.2 变量初始化


声明一个变量后必须使用赋值语句对变量进行显式初始化。不能使用未初始化的变量。

否则:

public static void main(String[] args) {

int i;

System.out.println(i);

}

这段代码会出现如下错误:

要想对一个声明过的变量赋值就得把变量名放在 = 左边,值或者表达式放在 = 右边,例:

int age;

age = 10000;

int month;

month = 8;

int week = 6;

**tip:**在Java中,变量声明尽量靠近第一次使用的地方,这是一个比较好的编程习惯

4.3 常量


在Java中,利用关键字指示常量,例如:

public static void main(String[] args) {

final double P_I_E = 3.14;

System.out.println(P_I_E);

}

tip : final表示的这个变量只能被赋值一次,一旦被赋值便不能再更改,习惯上,常量名全大写。

还有一种常量被称为类常量,这个常量可以在一个类的多个方法中使用,可以使用 static final 设置一个类常量,例如:

static final double P_I_E = 3.14;

public static void main(String[] args) {

System.out.println(P_I_E);

}

**注意:**类常量定义于类方法的外部。

5.运算符

=====

运算符用于连接值

5.1 算术运算符


+ - * / 分别表示加 减 乘 除运算。

整数的取余操作符用 % 表示。例:15 % 7 == 1

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

例:15 / 2 ==7 ;15 / 2.0 == 7.5

5.2 数学函数与常量


在Math类中包含了各种各样的数学函数,使用前加上这样一句代码:

import static java.lang.Math.*;

sqrt :计算一个数的平方根 ,例:

import static java.lang.Math.*;

public class OneBlogs {

public static void main(String[] args) {

double a = 25;

double b = sqrt(a);

System.out.println(b);

}

}

Math类中的sqrt方法不处理任何对象,这样的方法称为静态方法。

pow:表示幂运算 ,格式:pow(a , k)表示a的k次幂,例:

public static void main(String[] args) {

double a = 2;

double b = 3;

double c = pow(a,b);

System.out.println©;

}

Java还提供两个用于表示 π 和 e 常量最接近的近似值:Math.PI       Math.E

5.3 数值类型之间的转换


图中有箭头实线表示无数据丢失的转换,无箭头的实线表示有数据丢失的转换

Java中,当使用一个二元运算符连接两个值时,会先将两个操作数转换成同一种类型,再计算。

**·**有一个操作数是double类型,另一个也会转换成double类型

**·**有一个操作数是float类型,另一个也会转换成float类型

**·**有一个操作数是long类型,另一个也会转换成long类型

**·**否则其余都将转换成int类型

5.4 强制类型转换


上面提到必要时,int会转换为double类型,Java中允许经过强制类型转换将double转换为int,例:

double a = 3.5678;

int b = (int) a;

这样经过上述代码 b的值为3,因为强制类型转换通过截断小数部分将浮点值转化为整型。

如果想对浮点数进行舍入运算,得到最接近的整数,就需要Math.round方法,例:

double a = 9.999;

int b = (int) Math.round(a);

**注意:**round方法的返回值为long类型,所以必须使用强制类型转换(int)。

5.5 结合赋值和运算符


+=    -=     *=     /=    %=

例:a+=2   等价于  a=a+2

如果运算得到一个值与左侧操作数类型不同,就会发生强制类型转换,例:

int a; //a是int类型

a+=2.2; //是合法的等价于(int)(a+2.2)

5.6 自增自减运算符


++     –

i++与++i的结果都会使i进行加1,但它俩的区别主要在给表达式赋值的地方体现,例:

int i = 1;

int a = ++i; //先进行++再给a赋值,所以a是2

int b = i++; //先赋值再进行++,所以b还是1

–  与  ++一样

5.7 逻辑运算符


逻辑与:&&      逻辑或:||      逻辑非:!   这三个运算结果都是boolean类型,true或false

表达式1 && 表达式2,如果有一个表达式为假,结果就为假

表达式1 || 表达式2,如果有一个表达式为真,结果就为真

逻辑非!,假变真,真变假

5.8 位运算符


**按位与 &:**如果两个二进制位都是1,则结果为1,否则结果为0

10110101
11001101

10000101

**按位或 |:**如果两个二进制为都为0则结果为0,否则结果为1

**按位取反 ~:**如果该位为0则变为1,该位为1,则变为0

**按位异或 ^:**如果两个二进制位相同结果为0,不同为1

5.9 移位运算


**左移<<:**最左侧位不要了,右边补0

**右移>>:**最右侧位不要了,左边补符号位(正数补0,负数补1)

**无符号右移>>>:**最右侧位不要了,左侧补0

5.10 条件运算符


条件运算符也是Java中唯一一个三目运算符

表达式1?表达式2:表达式3          表达式1结果为真,则结果为表达式2,否则,为表达式3

代码示例:得到两个数的最大值 :

public static void main(String[] args) {

int a = 12;

int b = 23;

int max = a > b ? a : b;

System.out.println(max);

}

6.字符串

=====

从概念上Java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在Java类库中提供了一个预定义类,叫作String。用双引号括起来的字符串都是String类的实例:

String a = " ";

String names = “huanghe”;

6.1 子串


String类的substring方法可以从一个较大的字符串提取出一个子串,例如:

String str = “hello world”;

String str1 = str.substring(0,3); //会创建"hel"这个字符串

**注意:**在substring中从0开始计数,这里从0开始到3结束(不包括3),也就是复制位置0,1,2

**优点:**容易计算子串的长度,上述例子中子串的长度为3-0=3。

6.2 拼接


Java允许使用 “+” 连接两个字符串,例:

String str1 = “hello”;

String str2 = “world”;

String str3 = str1 + str2; //str3 = “helloworld”

**注意:**单词之间没有空格,+号完全按照给定的次序将两个字符串拼接起来。

这种特性常常用于输出语句中,例:

System.out.println(“your name is”+name);

6.3 检测字符串是否相等


使用equals方法检测两个字符串是否相等,**格式:**str1.equals(str2)   , 其结果是布尔类型,可以定义一个布尔类型的变量接收结果,例:

public class OneBlogs {

public static void main(String[] args) {

String str1 = “hello”;

String str2 = “world”;

String str3 = “hello”;

boolean a = str1.equals(str3);

System.out.println(a);

}

}

运行结果:

6.4 空串与Null串


空串" "是字符长度为0的字符串,可以调用以下代码检查一个字符串是否为空串

if (str.length()==0) 或者 if(str.equals(“”))

String还可以存放一个特殊值为null,表示目前没有任何对象与该变量关联,检查一个字符串是否为null使用如下代码:

if( str == null )

7.输入与输出

=======

7.1 从键盘输入


使用Scanner读取字符串,整数,浮点数

首先需要导入util包:import java .util .Scanner;

还需构造一个与“标准输入流”System.in关联的Scanner对象:

Scanner sc = new Scanner(System.in);

例:

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String name = sc.nextLine();

System.out.println(name);

}

如果想要读取一个整数,可以调用nextInt 方法(这种用的最多)例:

Scanner sc = new Scanner(System.in);

int age = sc.nextInt();

7.2 输出


在这里介绍三种输出方法:

int age = 20;

System.out.println(age); //第一种:输出自动换行

System.out.print(age); //第二种:输出不换行

System.out.printf(“%d”,age); //第三种:格式化输出

格式说明符尾部的转换符指示要格式化的数值的类型:f表示浮点数,s表示字符串,d表示十进制数。

8.程序逻辑控制

========

8.1 if 语句


语法格式1:

if(布尔表达式){

语句

}

如果布尔表达式结果为true,执行大括号中的语句,否则不执行。

语法格式2:

if(布尔表达式){

语句1;

}else{

语句2;

}

如果布尔表达式结果为true执行语句1,否则执行语句2。

语法格式3:

if(布尔表达式1){

语句1;

}else if(布尔表达式2){

语句2;

}else{

语句3;

}

表达式1成立执行语句1,表达式2成立执行语句2,否则执行语句3。

**注意:**if else 语句中可以不加大括号,但是只能写一条语句(不建议这样使用),else与和它最近的 if 相匹配。实际开放中建议加上大括号。

8.2 switch语句


基本语法:

switch(表达式){

case 1:

语句1;

break;

case 2:

语句2;

break;

case 3:

语句3;

break;

default:

不满足执行此语句;

break;

}

**执行流程:**先计算表达式的值,然后与case比较,有对应的就执行对应的语句,遇到break结束,当表达式的值没有与之对应,就执行default下面的语句。

最后

看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面

小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

image

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

image

全都是一丢一丢的收集整理纯手打出来的

更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

image

image

表达式1成立执行语句1,表达式2成立执行语句2,否则执行语句3。

**注意:**if else 语句中可以不加大括号,但是只能写一条语句(不建议这样使用),else与和它最近的 if 相匹配。实际开放中建议加上大括号。

8.2 switch语句


基本语法:

switch(表达式){

case 1:

语句1;

break;

case 2:

语句2;

break;

case 3:

语句3;

break;

default:

不满足执行此语句;

break;

}

**执行流程:**先计算表达式的值,然后与case比较,有对应的就执行对应的语句,遇到break结束,当表达式的值没有与之对应,就执行default下面的语句。

最后

看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面

小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

[外链图片转存中…(img-4V7bMm1R-1714630805100)]

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

[外链图片转存中…(img-R31NSb4N-1714630805101)]

全都是一丢一丢的收集整理纯手打出来的

更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

[外链图片转存中…(img-XSUaV6wU-1714630805101)]

[外链图片转存中…(img-P29h1VjK-1714630805102)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值