day04-Java基础语法
Java基础语法
1.注释
注释不会被执行,是用来给写代码的人看的。
1.1单行注释
单行注释只能注释一行文字
// 注释
1.2多行注释
多行注释可以注释多行文字
/* 注释
注释
注释
*/
1.3文档注释
JavaDoc:文档注释
例
/**
* @Description HelloWrold
* @Author liyuelian
*/
2.标识符和关键字
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
2.1关键字
1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while
2)2个保留字(现在没用以后可能用到作为关键字):goto、const
3)3个特殊直接量:true、false、null
2.2标识符注意点
所有的标识符都要以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始;
首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(_)或者数字的四种字符任何组合;
不能使用关键字作为变量名或者方法名;
标识符大小写敏感;
可以使用中文命名,但是不建议使用;

3.数据类型
强类型语言:(C、C++、Java等)
要求变量的使用严格符合规定,所有变量必须先定义之后才能使用。
弱类型语言:(VB、JS等)
可以先使用后定义。
Java的数据类型分为两大类:
1. 基本数据类型
2. 引用数据类型
类、接口、数组....
3.1基本数据类型
基本数据类型(primitive Type)包括四大类八小种
1、整数型
byte
short
int
long
2、浮点型
float
double
3、布尔型
boolean
4、字符型
char
字符串String属于引用类,不是关键字
3.2引用数据类型
Reference Type
类
接口
数组
3.3什么是字节?
位(bit):是计算机内部数据存储的最小单位,1bit表示一位,如1011 0010是一个八位二进制数。
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示。
1B(byte,字节)=8b(bit,位)
字符:是指计算机中使用的字母、数字、字和符号。
4.数据类型拓展以及面试题讲解
4.1整数拓展
进制:二进制(0b)、八进制(0)、十进制、十六进制(0x)
public class Hello {
public static void main(String[] args) {
int i=0b10;//二进制0b
int i1=10;
int i2=010;//八进制0
int i3=0x10;//十六进制0x
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
}
}
运行结果:
2
10
8
16
Process finished with exit code 0
4.2浮点数拓展
例子1 银行业务怎么表示钱
public class Hello {
public static void main(String[] args) {
//浮点数拓展? 银行怎么表示 钱
//例子1
float f = 0.1f;//0.1
double d=1.0/10;//0.1
System.out.println(f==d);//false
float d1=292929292828282f;
float d2=d1+1;
System.out.println(d1==d2);//true
}
}
运行结果:
false
true
原因:浮点数的位数是有限的,离散的,但是某些运算的结果可能会有无限位小数。浮点数一般会存在舍入误差,接近但不等于实际数值。因此最好完全避免使用浮点数进行比较。
那么银行业务怎么表示钱?
答案是使用数学工具类BigDecimal
4.3字符拓展
public class Hello {
public static void main(String[] args) {
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//强制转换
System.out.println(c2);
System.out.println((int)c2);//强制转换
}
}
运行结果:
a
97
中
20013
原因:所有的字符本质还是数字--->涉及到编码问题 Unicode
unicode 表:
97 代表 a
65 代表 A
Unicode编码范围从U0000~UFFFF(0~65535)
转义字符
转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。简单来说就是在一些字符前加 “\” 使它具有其他意义。
4.4布尔值拓展
public class Hello {
public static void main(String[] args) {
boolean flag=true;
if(flag==true){}
if(flag){}//与上一行功能一致,默认为true
}
}
5.类型转换
八种数据类型占用空间大小:
| 类型描述 | 基本数据类型 | 占用空间大小[字节] | 取值范围 | 默认值 |
|---|---|---|---|---|
| 字节型 | byte | 1 | -128~127 | 0 |
| 短整型 | short | 2 | -32768~32768 | 0 |
| 整型 | int | 4 | -2^31~2^31-1 | 0 |
| 长整型 | long | 8 | -2^63~2^63-1 | 0 |
| 单精度浮点型 | float | 4 | 3.4e-45~1.4e38 | 0.0f |
| 双精度浮点型 | double | 8 | 4.9e-324~1.8e308 | 0.0d |
| 字符型 | char | 2 | 0~65535 | '\u0000' |
| 布尔型 | boolean | 1 | true/false | false |
*关于默认值:成员变量没有手动赋值,系统会默认赋值,局部变量则不会。八种数字类型的默认值是一切向0看齐。
由于Java是强类型语言,所以进行有些运算时需要用到类型转换
低 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > 高
byte < short / char < int < long < float < double
小数优先,因此虽然float的字节数比long小,但long转换成float仍是自动类型转换。
运算中,不同类型的数据先转化为同一类型,然后进行运算。
5.1强制类型转换
大容量转换成小容量,叫做强制类型转换(高—>低)
例子
public class Hello {
public static void main(String[] args) {
int i=128;
byte b=(byte)128;//内存溢出
//强制转换 (类型)变量名
System.out.println(i);
System.out.println(b);
}
}
运行结果:
128
-128
5.2自动类型转换
小容量向大容量转换,称为自动类型转换(低—>高)
例子
public class Hello {
public static void main(String[] args) {
int i=128;
double b=i;
//强制转换 (类型)变量名
System.out.println(i);
System.out.println(b);
}
}
运行结果:
128
128.0
int转成long类型,由低到高,因此会自动转换。
注意点:
不能对布尔类型进行转换
不能把对象类型转换为不相干的类型
再把高容量转换成低容量时需要强制转换
转换时可能存在内存溢出或者精度问题
例
public class Hello {
public static void main(String[] args) {
System.out.println((int)23.7);//23,默认向0取整
System.out.println((int)-45.89f);//-45,默认向0取整
}
}
public class Hello {
public static void main(String[] args) {
char c='a';
int d=c+1;
System.out.println(d);//98,自动转换
System.out.println((char)d);//b,强制转换
}
}
public class Hello {
public static void main(String[] args) {
//操作比较大的数时,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money =10_0000_0000;
System.out.println(money);//输出为1000000000
int years=20;
int total=money*years;
System.out.println(total);//-1474836480,溢出
long total2=money*years;//-1474836480
//在赋值给total2之前,由于money和years都是int型,
// 那么相乘所得的结果也是int类型,已经出现溢出问题,
// 因此赋值之前的值已经为-1474836480,所以这里的结果也是-1474836480
long total3=money*(long)years;//先把一个数转换为long
System.out.println(total3);//结果是 20000000000
}
}
day04-Java基础语法的更多相关文章
- Java编程基础阶段笔记 day04 Java基础语法(下)
day04 Java基础语法 (下) 笔记Notes要点 switch-case语句注意 switch-case题目(switchTest5) 循环执行顺序 if-else 实现3个整数排序 Stri ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- Java基础语法(下篇)
Java基础语法(下篇) 内容概要: (1)函数的定义 (2)函数的特点 (3)函数的应用 (4)函数的重载 ...
- Java基础语法(上篇)
Java基础语法(上篇) 知识概要: (1)关键字的表示与规范 (2)标示符 (3)注释 (4 ...
- java——基础语法
java基础语法 1.关键字:java赋予特殊含义的单词. 2.标识符:程序中开发人员自定义的名词,例如:类名,函数名,变量名(注意事项:①不能以阿拉伯数字开头②不能采用关键字). 3.常量:固定的数 ...
- java基础语法(二)--单列模式
java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...
- java基础语法(一)
java基础语法(一) 1.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成 对象(Object).对象又叫做实例(Instance). 2.类由两大部分构成:属性 ...
- Java基础语法入门01
Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...
- Java匹马行天下之JavaSE核心技术——Java基础语法
Java基础语法 一. 认识Java 1. Java 简介 java 是一种高级的面向对象的程序设计语言,使用Java语言编写的程序时跨平台的.从pc到手机,都有Java开发的程序和游戏,Java ...
- JAVA基础语法——标识符、修饰符、关键字(个人整理总结)
JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1 什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...
随机推荐
- 通过Demo学WPF—数据绑定(二)
准备 今天学习的Demo是Data Binding中的Linq: 创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示: 查看这个Demo的效果: 开始学习这个Demo xaml部分 ...
- CF526F Pudding Monsters 题解
题目链接:CF 或者 洛谷 析合树真是连续段问题的降智神器 先看下题目的一些特殊性,每行每列恰好有一个棋子.考虑特殊性,\(n \times n\) 的棋盘,那么就该判断是否有 \(n\) 个棋子,容 ...
- Vulkan学习苦旅06:创建渲染通道(VkRenderPass)
对于一个复杂的图形应用程序,需要多个过程的配合,以生成图像的各个部分.通常,各个过程间存在着依赖关系,例如某个过程生成的图像(输出)被另一个过程使用(作为此过程的输入).在Vulkan中,每个过程被称 ...
- Pandas 美国竞选捐赠案例
import pandas as pd """ 需求 1.加载数据 2.查看数据的基本信息 3.指定数据截取,将如下字段的数据进行提取,其他数据舍弃 cand_nm: 候 ...
- NC53370 Forsaken的三维数点
题目链接 题目 题目描述 Forsaken现在在一个三维空间中,空间中每个点都可以用 \((x,y,z)\) 表示.突然,三维空间的主人出现了,如果Forsaken想要继续在三维空间中呆下去,他就 ...
- NC51097 Parity game
题目链接 题目 题目描述 Now and then you play the following game with your friend. Your friend writes down a se ...
- Linux进程通信 | 管道与FIFO
Linux进程间通信通常使用的方式有很多种,其中比较常用的包括管道(pipe)和 FIFO(命名管道).本文将介绍这两种通信方式的基本概念,并用C语言编写示例代码,来说明如何在两个进程之间使用这些IP ...
- 【Unity3D】Bloom特效
1 Bloom 特效原理 Bloom 特效是指:将画面中较亮的区域向外扩散,造成一种朦脓的效果.实现 Bloom 特效,一般要经过 3 个阶段处理:亮区域检测.高斯模糊.Bloom 合成. 本 ...
- 【Android】使用AIDL实现进程间通讯简单案例
1 AIDL 简介 AIDL(Android Interface Definition Language)是一种接口定义语言,用于生成可在 Android 设备上两个进程之间进行进程间通信(IPC ...
- 将docker镜像推送到阿里云镜像仓库
1.注册阿里云账号(支付宝扫码登录也可以) 进入控制台,找到[容器镜像服务] 2.创建命名空间 3.创建镜像仓库 4.设置授权凭证 5.登录 docker login --username=index ...