变量、数据类型和运算符

注释

文档注释以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些
JavaDoc 标签(后期写项目时,可以生成项目的 API。

/**
* Welcome 类(我是文档注释)
* @author 高淇
* @version 1.0
*/
public class Welcome {
//我是单行注释
public static void main(String[ ] args/*我是行内注释 */) {
System.out.println("Hello World!");
}
/* 我是多行注释!
我是多行注释!
*/
}

标识符

表示类名的标识符:每个单词的首字母大写,如 Man, GoodMan
表示方法变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为
驼峰原则”,如 eat(), eatFood()

变量

局部变量
成员变量(实例变量)从属于对象,生命周期伴随对象始终。
静态变量 从属于始终,从类加载到卸载。如果不自行初始化,和成员变量相同会自动初始化成该类型的默认初始值。

public class MyStatic {
    // 静态变量
    private static int index = 0;
    // 实例变量
    private int count = 0;
    
    public void inc() {
        index++;
        count++;
    }
    
    public String  get() {
        return "静态变量index = " + index + ",  实例变量count = " + count;
    }
}
/**
 * index是静态变量
 * count是实例变量
 * */

public class StaticVariableTest {
    public static void main(String[] args) {
        MyStatic myStatic1 = new MyStatic();
        MyStatic myStatic2 = new MyStatic();
        MyStatic myStatic3 = new MyStatic();
        myStatic1.inc();
        System.out.println("myStatic1的index、count增加1:");
        System.out.println("myStatic1的" + myStatic1.get());
        System.out.println("myStatic2的" + myStatic2.get());
        System.out.println("myStatic3的" + myStatic3.get() + "\n");
        myStatic2.inc();
        System.out.println("myStatic2的index、count增加1:");
        System.out.println("myStatic1的" + myStatic1.get());
        System.out.println("myStatic2的" + myStatic2.get());
        System.out.println("myStatic3的" + myStatic3.get() + "\n");
        myStatic3.inc();
        System.out.println("myStatic3的index、count增加1:");
        System.out.println("myStatic1的" + myStatic1.get());
        System.out.println("myStatic2的" + myStatic2.get());
        System.out.println("myStatic3的" + myStatic3.get());
    }
}
myStatic1的index、count增加1:
myStatic1的静态变量index = 1,  实例变量count = 1
myStatic2的静态变量index = 1,  实例变量count = 0
myStatic3的静态变量index = 1,  实例变量count = 0

myStatic2的index、count增加1:
myStatic1的静态变量index = 2,  实例变量count = 1
myStatic2的静态变量index = 2,  实例变量count = 1
myStatic3的静态变量index = 2,  实例变量count = 0

myStatic3的index、count增加1:
myStatic1的静态变量index = 3,  实例变量count = 1
myStatic2的静态变量index = 3,  实例变量count = 1
myStatic3的静态变量index = 3,  实例变量count = 1

Java存放几乎所有的对象实例,被所有线程共享
方法区(永久代)与Java堆一样,是各个线程共享的内存区域,它用于存储已经被虚拟机加载类信息常量静态变量(static variable)等。
个人理解:方法区存放的是静态的数据,而堆存放的是动态生成的数据。
Java虚拟机运行时数据区
常量 一旦初始化后不能更改其值。
final type varName = value;
命名方式:大写字母和下划线

基本数据类型和引用数据类型

基本数据类型:

数值型- byte、 short、int、 long、float、 double
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
浮点数能够精确表示的数是有限的,因而也是离散的。 浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
java.math 包下面的两个有用的类:BigInteger 和 BigDecimal,这两个类可以处理任意长度的数值。BigInteger 实现了任意精度的整数运算。BigDecimal 实现了任意精度的浮
点运算。
字符型- char
布尔型-boolean
基本数据类型

byte类型详讲

byte 8位,范围[-128,127]
最高位是0为正数,最高位为1为负数。负数的值是取反加一然后加一个负号就是负数的值

最大正数:01111111,十进制为127
最小负数:1000000, 取反01111111,加一10000000,取反-128

最大正数加一得到最小负数

byte a = 127; 
a+=1; 
System.out.println(a);

结果正好是-128。
由此可得二进制从00000000–>01111111–>10000000–>11111111即为十进制从0、127、-128、-1。

接下来,我们用一段代码来更深刻地理解byte:

public class A {
 public static void main(String[] args) {
  int b = 456;
  byte test = (byte) b;
  System.out.println(test);
 }
}

上述代码,最后会输出-56。原因如下:

456的二进制表示是111001000,由于int是32位的二进制,所以在计算机中,实际上是00000000000……111001000,当int转成byte的时候,那么计算机会只保留最后8位,即11001000。

然后11001000的最高位是1,那么表示是一个负数,而负数在计算机中都是以补码的形式保存的,所以我们计算11001000的原码为00111000,即56,所以11001000表示的是-56,所以最后test的值为-56。

引用数据类型(之后会详讲)


接口
数组

运算符

在这里插入图片描述

算数运算符

如果两个操作数有一个为 long, 则结果也为 long。
没有 long 时,结果为 int。即使操作数全为 short,byte,结果也是 int。
如果两个操作数有一个为 double,则结果为 double。
只有两个操作数都是 float,则结果才为 float。

int a = 3;
int b = a++; //执行完后,b=3。先给b赋值,再自增。
System.out.println("a="+a+"\nb="+b);
a = 3;
b = ++a; //执行完后,b=4。a先自增,再给b赋值
System.out.println("a="+a+"\nb="+b);

逻辑运算符

在这里插入图片描述

位运算符

在这里插入图片描述
&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是 boolean 类型,就作为逻
辑运算符。如果两侧的操作数是整数类型,就是位运算符。
不要把“^”当做数学运算“乘方”,是“位的异或”操作

条件运算符

int score = 80;
int x = -100;
String type =score<60?"不及格":"及格";
int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
System.out.println("type= " + type);
System.out.println("flag= "+ flag)
type= 及格
flag= -1

简单的输入和输出

import java.util.Scanner;
public class Welcome2 {
public static void main(String[ ] args) {
Scanner scanner = new Scanner(System.in);
// 将输入的一行付给 string1
String string1 = scanner.nextLine();
// 将输入单词到第一个空白符为止的字符串付给 string2
String string2 = scanner.next();
// 将输入的数字赋值给变量
int a = scanner.nextInt();
System.out.println("-----录入的信息如下-------");
System.out.println(string1);
System.out.println(string2);
System.out.println(a * 10);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值