首页 > 编程语言 >JavaSE复习day1

JavaSE复习day1

时间:2022-12-06 00:23:12浏览次数:68  
标签:复习 int System day1 运算符 println JavaSE 变量 out

JavaSE复习day1

胡家伟

1.代码格式

注释

单行注释 :通常用于解释方法内某单行代码的作用。

多行注释 :通常用于解释一段代码的作用。

文档注释 :通常用于生成 Java 开发文档。

//单行注释
/*
*多行注释
*
*/

标识符

标识符就是一个名字,我们对类、方法、变量之类取得名字就是标识符。

关键字

分类 关键字
访问控制 private protected public
类、方法和变量修饰符 abstract class extends final implement interface native
new strictfp static synchronized transient volatile enum
程序控制 break continue return while do if else
for instanceof switch case default assert
错误处理 try catch throw throws finally
包相关 import package
基本类型 int float double char boolean short long
byte
变量引用 super this void
保留字 goto const

虽然true、false、null看起来是关键字但是实际上是字面值,也无法作为标识符来使用。

2.变量&数据类型

变量

成员变量与局部变量的区别?

  • 语法形式 :从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控制修饰符及 static 所修饰;但是,成员变量和局部变量都能被 final 所修饰。
  • 存储方式 :从变量在内存中的存储方式来看,如果成员变量是使用 static 修饰的,那么这个成员变量是属于类的,如果没有使用 static 修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。
  • 生存时间 :从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动生成,随着方法的调用结束而消亡。
  • 默认值 :从变量是否有默认值来看,成员变量如果没有被赋初始值,则会自动以类型的默认值而赋值(一种情况例外:被 final 修饰的成员变量也必须显式地赋值),而局部变量则不会自动赋值。

静态变量有什么作用?

静态变量可以被类的所有实例共享。无论一个类创建了多少个对象,它们都共享同一份静态变量。

通常情况下,静态变量会被 final 关键字修饰成为常量。

二进制、八进制、十六进制表示方法

二进制 0b 0B

八进制 0

十六进制 0x 0X

数据类型

数据分为两类。

基本数据类型(值类型)

  • 数值类型
    • 整数类型
      • byte
      • short
      • int
      • long
    • 小数类型
      • float
      • double
    • 布尔类型
      • boolean
    • 字符类型
      • char

这 8 种基本数据类型的默认值以及所占空间的大小如下:

基本类型 位数 字节 默认值 取值范围
byte 8 1 0 -128 ~ 127
short 16 2 0 -32768 ~ 32767
int 32 4 0 -2147483648 ~ 2147483647
long 64 8 0L -9223372036854775808 ~ 9223372036854775807
char 16 2 'u0000' 0 ~ 65535
float 32 4 0f 1.4E-45 ~ 3.4028235E38
double 64 8 0d 4.9E-324 ~ 1.7976931348623157E308
boolean 1 false true、false

3.4E38指3.4乘以10的38次方

3.5E-2值为0.035

一个字节是8个比特位 1byte=8bit 采用2进制表示

例如byte类型是8个比特位不考虑负数时最小值是00000000,最大值是11111111

转换为十进制就是0~255,考虑负数之后就是-128~127

引用数据类型

字面量

字面量就是由字母,数字等构成的字符串或者数值,她只能作为右值(等号右边的值)

或者说是用于表达源代码中一个固定值的表示法

例 int a=8 8就是右值 就是字面量

Unicode(统一码、万国码、单一码)

char a=99;
System.out.println(a);
输出:c

堆栈

局部变量 成员变量
基本数据类型 变量名和值都在方法栈 变量名和值在堆内存
引用数据类型 变量在方法栈,变量指向的对象在堆 变量名和变量名指向的对象都在堆

以上可知为什么引用数据类型叫做‘引用’。

3.运算符

表达式

表达式 = [操作数] [运算符] 计算单元

1.任何表达式都一定有一个结果

2.表达式类别有很多

算数运算符

+ - * / %五种

+还有一个作用,如果此运算符两端或者任何一段的内容是字符串或者字符类型,那么执行的结果将会是内容拼接。

int a=1;
String b="h";
System.out.println(a+b);
输出为:1h

赋值运算符

运算符 用途 使用示例
= 进行赋值 可以声明变量同时赋值或者先声明变量在赋值
+= 赋值同时进行加法 int i = 10;
i += 20;//等于i = i + 20;
-= 赋值同时进行减法 int i = 10;
i -= 20;//等于i = i - 20;
*= 赋值同时进行乘法 int i = 10;
i *= 20;//等于i = i * 20;
/= 赋值同时进行除法 int i = 10;
i /= 2;//等于i = i / 2;
%= 赋值同时进行取模 int i = 10;
i %= 2;//等于i = i % 2;

初始化

所谓初始化,只是一个概念,通常我们把一个崭新的变量第一次赋值的过程称之为初始化

int i;//声明了一个新的变量
i = 10;//这是i变量的第一次赋值,我们可以称之为初始化
int j = 20;//声明了一个新的变量并且直接赋值了,这种情况我们也可以称之为初始化
j = 2;//这是第二次赋值了,只能叫重复赋值,而不能称之为初始化。

比较运算符(关系运算符)

比较运算符表达式最终的结果是boolean类型值,也就是true或者false

运算符 用途
> 比较左面大于右面
< 比较左面小于右面
== 比较运算符两边的值是否相等,不能比较字符串类型的值(需要用equals)
>= 比较左面大于等于右面
<= 比较左面小于等于右面
!= 比较左面不等于右面

自增自减运算符

++ 和 -- 运算符可以放在变量之前,也可以放在变量之后,当运算符放在变量之前时(前缀),先自增/减,再赋值;当运算符放在变量之后时(后缀),先赋值,再自增/减。例如,当 b = ++a 时,先自增(自己增加 1),再赋值(赋值给 b);当 b = a++ 时,先赋值(赋值给 b),再自增(自己增加 1)。也就是,++a 输出的是 a+1 的值,a++输出的是 a 值。用一句口诀就是:“符号在前就先加,符号在后就后加”

int a=9;
int b=9;
int c = a++;
int d = ++b;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
输出结果:
a=10 
b=10
c=9	//先赋值后 
d=10 //先+1后赋值

逻辑运算符

运算符 含义 解释
&&
&
与(AND) 都真为真
||
|
或(OR) 一真即真
非(NOT) 返回操作数相反的布尔值
boolean a=true,b=false;
System.out.println(a && a);//ture
System.out.println(a && b);//false
System.out.println(b && b);//false
System.out.println(a || b);//true
System.out.println(b || b);//false
System.out.println(a || a);//true
System.out.println(!a);//false
System.out.println(!b);//true

&&、||为短路运算符,&、|为非短路运算符

例如boolean a = false, b = true要判断AND时,使用&&。

System.out.println(a&&b)左边的a已经是false不满足AND了就会直接结束运行,而使用&时a不满足也不会停止运行,会继续验证b是否符合。

int i = 10;
System.out.println(false && i++ < 20);
System.out.println(i);//10 短路 后面的i++没有运行
int j = 10;
System.out.println(false & j++ < 20);
System.out.println(j);//11 非短路 后面的i++运行了

三元运算符

语法

语法 [条件语句] ? [表达式1] : [表达式2]
说明 三元运算符由三个部分构成,其中第一部分条件语句表达式结果必须是布尔类型。如果这个条件语句的表达式结果为真,则整个三元运算符表达式结果取问号后面的值(表达式1)的值;如果这个条件语句的表达式结果为假,则取冒号后面的值(表达式2的值)。

示例

看如下的两端代码,左侧的流程结构的代码可以直接用右边的三元运算符实现。

使用流程结构 使用三元运算符
String result = "";
int i = 10;
if(i % 2 == 0){
result = "i是一个偶数"; }
else{
result = "i是一个奇数"; }
int i = 10;
String result = i % 2==0 ? "i是一个偶数" : "i是一个奇数";

运算符的优先级

()[] 优先级最高,= 优先级最低。

4.标识符命名规则&数据类型转换&转义字符

  • Java对于变量、方法、类等要素命名的时候所使用的字符串称之为标识符。
  • 简单地说只要是我们自己可以定义的名称都可以称之为标识符。

接收用户输入

Scanner input = new Scanner(System.in);
System.out.println("请输入你的名字");
String name = input.next();
System.out.println(name);

标识符命名规则

所谓的规则,指的是无论如何也需要遵守的内容,如果不这么做程序将会无法正常的运行。

  1. 标识符可以由26个英文字母、0-9、_(下划线)、$(美元符号)构成。
  2. 不可以由数字作为开头 。
  3. 不可使用关键字或者保留字,但是可以包含关键字或保留字。
  4. Java中严格区分大小写,但是对于长度没有限制。
  5. 标识符不可以包含空格。

标识符命名规范

在满足命名规则的基础上,行业中给出的一些明明建议,规范允许不被严格遵守。

  1. 包名:所有的字母均由小写字母构成。
  2. 类、接口名:多单词组成的时候所有的单词首字母大写。
  3. 变量、方法名:多单词组成时,首单词首字母小写,从第二个单词开始首字母大写。(驼峰命名法)
  4. 常量:所有字母均大写,多个单词组成的时候不同单词之间使用下划线作为分割。

数据类型转换

分为类型自动提升和强制转换。

类型自动提升

  • 在进行赋值运算的场景中发生的类型自动提升。
byte num1 = 1;
short num2 = num1;
int num3 = num2;
  • 在算数运算的场景中也会发生类型自动提升
    byte short char int之间的算数计算结果会自动提升为int类型
byte num4 = 10;
byte num5 = 1;
byte num6 = num4 - num3;//此时该语句报错 num4-num3提供的类型是int 而需要的是byte

如果有long的参与,类型会自动提升为long类型

如果有float的参与,类型会自动提升为float类型

如果有double的参与,类型会自动提升为double类型

double``float``long``int优先级由高到低(自动往范围大了转)。

强制类型转换

人为干预的数据类型转换,例:

int a = 8;
byte b = (byte) a;

转义字符

转义字符的概念

Java中转义字符用反斜杠\表示,作用是用来转义后面的一个字符,通常表示一个不可见的字符或者有特殊作用的字符。

常用的转义字符

\n表示换行符,将后面的内容进行换行。

\r表示回车符

System.out.println("HelloWorld");
System.out.println("Hello\rWorld");
输出
HelloWorld
World

​ 回车符会定位到该行的开头,相当于把Hello覆盖了。

\t表示制表符,相当于TAB

System.out.println("Hello\tWorld\t!");
输出
Hello	World	!

\b表示退格符号,相当于键盘上的Backspace

System.out.println("HelloWorld\b");
输出
HelloWorl

其他的常用字符

\’ 表示单引号字符
\" 表示双引号字符
\\ **表示反斜杠字符 **

5.选择结构

IF

int a = 0;
if(a == 0){
    System.out.println("a=0");
}

IF-ELSE

int b = 1;
if(b == 0){
    System.out.println("b=0");
}
else{
    System.out.println("b!=0");
}

多重IF

int grade = 80;
if(grade<60){
    System.out.println("不及格");
}
else if(grade >=60 && grade <80){
    System.out.println("及格");
}
else{
    System.out.println("优秀");
}

SWITCH-CASE

语法:

switch(数据:byte、short、int、char、字符串、枚举)

{

case 数据:{//执行语句}; break;

case 数据:{//执行语句}; break;

……

default:{//执行语句} break;

}

switch()里面的数据和case后面的数据进行比较,相等时就会执行case后面的语句,如果该case没有添加break就会一直向下执行到break为止。

char grade = 'd';
switch(grade){
    case 'A':
        System.out.println("优秀");
        break;
    case 'B':
        System.out.println("良好");
        break;
    case 'C':
        System.out.println("及格");
        break;
    default:
        System.out.println("缺考");
        break;

}

6.循环结构

while循环(当型循环)

int i = 1;
while(i <= 3){
    System.out.println("第"+i+"次循环");
    i++;
}
输出
第1次循环
第2次循环
第3次循环    

while循环特征:先判断再循环

do-while循环(直到型循环)

int i = 1;
do {
    i++;
    System.out.println("第"+i+"次循环");
}while (i <= 3);
输出
第2次循环
第3次循环
第4次循环

do-while循环特征:先执行再判断

for循环

for([内容1] ; [内容2] ; [内容3]){

​ [内容4]

}

  1. 内容1进入循环时执行,只执行一次。
  2. 每次执行循环体之前都会执行内容2的判断。
  3. 内容3每次执行完循环体之后执行。
  4. 内容2部分判断为真则执行内容4。
for(int i = 1;i <= 3;i ++){
    System.out.println("第"+i+"次循环");
}
输出
第1次循环
第2次循环
第3次循环

循环的嵌套

for(int i = 1;i <= 9;i++){
    for(int j = 1;j <= i;j++){
        System.out.print(j+"*"+i+"="+i*j+" ");
    }
    System.out.println("\n");
}
输出
1*1=1 

1*2=2 2*2=4 

1*3=3 2*3=6 3*3=9 

1*4=4 2*4=8 3*4=12 4*4=16 

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

循环的控制

在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词

  1. continue :指跳出当前的这一次循环,继续下一次循环。
  2. break :指跳出整个循环体,继续执行循环下面的语句。

return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:

  1. return; :直接使用 return 结束方法执行,用于没有返回值函数的方法
  2. return value; :return 一个特定值,用于有返回值函数的方法

练习:

boolean flag = false;
for (int i = 0; i <= 3; i++) {
    if (i == 0) {
        System.out.println("0");
    } else if (i == 1) {
        System.out.println("1");
        continue;
    } else if (i == 2) {
        System.out.println("2");
        flag = true;
    } else if (i == 3) {
        System.out.println("3");
        break;
    } else if (i == 4) {
        System.out.println("4");
    }
    System.out.println("xixi");
}
if (flag) {
    System.out.println("haha");
    return;
}
System.out.println("heihei");

输出
    
0
xixi
1
2
xixi
3
haha

跨级控制

break:

当想让break跳出多层循环时,可以在那层循环外添加一个标识符,这样break时就能调到那层循环外了。

for(int m = 0; m < 5;m++) {
    loop:
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            if (j == 2) {
                break loop;
            }
        }
    }
}
//运行完j==2时,break loop使得结束了里面的两层循环于是最外层循环继续m++,m=1,i=0,j=0

continue:

想让continue跳出多层的循环时

for(int m = 0; m < 5;m++) {
    loop:
    for (int i = 0; i < 5; i++) {
        
        for (int j = 0; j < 5; j++) {
            if (j == 2) {
                continue loop;
            }
        }
    }
}
//运行完j==2时,continue loop使得第二层的i=0循环结束了,i++,开始了下一次的循环,m=0,i=1,j=0

标签:复习,int,System,day1,运算符,println,JavaSE,变量,out
From: https://www.cnblogs.com/chiawei/p/16953985.html

相关文章

  • Angular 复习与进阶系列 – Dependency Injection 依赖注入
    前言本来是想先介绍AngularComponent的,但里头有涉及到一些DependencyInjection(简称DI)的概念.所以还是先介绍DI吧. 介绍我在 ASP.NETCore–Depende......
  • 算法复习第一章
    1、习题 D、要所有实例  2、ppt                                 ......
  • Angular 复习与进阶系列 – Get Started
    前言这一篇主要是教一些基础中的基础,方便我后续讲解其它主题的时候,可以列出一些samplecode. BeforeStart开始前,我们需要知道几个小知识1.AngularCompilat......
  • 十四、JDBC复习
    十四、JDBC复习配置pom.xml文件中配置依赖<dependencies>  <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java<......
  • Angular 复习与进阶系列 – 概念篇
    前言我已经2年没有写Angular,最近又要开始撸了.既然都要复习了,那就干脆也写一个系类当作半教程半深入理解Angular吧.适合阅读的人1.向我一样很长一段时间没有......
  • SpringCloud游戏平台改造-Day1
    Day1今天主要的工作是有,新建项目结构(后期可能会根据实际情况修改),实现了登录注册API项目思路目前的项目思路为以下几部分:GameAuth:用来提供用户登录注册接口,认证接口......
  • day12_内部类&API
    1、参数传递1.1类名作为形参和返回值类名——方法形参    方法的形参是类名,需要的是该类的对象;实际传递的是该对象的地址值类名——返回值    方法的返......
  • 数值分析期末复习
    22-12-02uploadCh1误差分析复习总结Contents绝对误差和相对误差。误差对函数的影响。(一元和多元)有效数字概念。递推算法稳定性。秦九韶公式。绝对误差与相对......
  • 复习struts2中常见的三个用法
    在使用struts2时,发现有如下三个知识点和用法还是挺常用的,小结之,分别是:displaytag,struts2的验证和struts2的model-driven.1displaytag的使用disp......
  • junit复习1 @before class @after class
    先看代码publicclassJunitTest1{privateCollectioncollection;@BeforeClasspublicstaticvoidoneTimeSetUp(){//one-......