Java基础语法初学者了解
Java语言的特点
- 简单的面向对象语言
- 跨平台与解释执行
可以做到一次编译,到处执行。
(Java跨平台,Java虚拟机不跨平台)
在具体的机器运行环境中,由Java虚拟机对字节码进行解释执行。通过定义独立于平台的基本数据类型及运算,Java数据得以在任何硬件平台上保持一致。(解释执行无疑在效率上要比直接执行机器码低,所以Java的运行速度比C++要慢些。) - 健壮和安全的语言
Java不支持指针,从而防止了对内存的非法访问。 - 支持多线程
Java的自动垃圾回收就是以线程方式在后台运作
Java自动回收内存:轮询机制(查岗)
Java垃圾回收器(GC Garbage Collection) - 面向网络的语言
- 动态性
在运行时所有的Java类是动态装载的
Java基础语法
- 大小写敏感
- 类名首字母大写,驼峰命名法。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名以小写字母开头。如果有若干单词,后面每个单词首字母大写。
- 源文件名必须和类名相同。
- 所有Java程序由 public static void main(String []args) 方法开始执行。
Java关键字
······························································
访问控制
private 私有的
protected 受保护的
public 公共的
default 默认
······························································
类、方法和变量修饰符
abstract 声明抽象
class 类
extends 扩充,继承
final 最终值,不可改变的
implements 实现(接口)
interface 接口
native 本地,原生方法(非 Java 实现)
new 新,创建
static 静态
strictfp 严格,精准
synchronized 线程,同步
transient 短暂
volatile 易失
·······························································
程序控制语句
break 跳出循环 在Java中可以跳到标签处(outer)
continue 继续 同上
case 定义一个值以供 switch 选择
default 默认
do 运行
else 否则
for 循环
if 如果
instanceof 实例
return 返回
switch 根据值选择执行
while 循环
·································································
错误处理
assert 断言表达式是否为真
catch 捕捉异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常
···································································
包相关
import 引入
package 包
····································································
基本类型
boolean 布尔型
byte 字节型
char 字符型
double 双精度浮点
float 单精度浮点
int 整型
long 长整型
short 短整型
········································································
变量引用
super 父类,超类
this 本类
void 无返回值
·····································································
保留关键字
goto 是关键字,但不能使用
const 是关键字,但不能使用
null 空
·······································································
复制自:菜鸟教程
Java对象和类
- 类定义包括类声明和类体,语法格式为:
[修饰符] class 类名 [extend 父类名 ] [implements 接口列表]
{
//类体
}
说明:- 类定义中带括号的内容为可选部分。
- 修饰符有访问控制修饰符和类型修饰(abstract、final)。
- extends 引导该类要继承的父类。
- implements 引导该类要继承的父类。
- 创建类后可用 “new+构造方法” 来创建类的对象。具体格式如下:
<类型> 引用变量名=new <类型>([参数])
Dog d = new Dog(); - 一个源文件只能由一个public类,可以有多个非public类。
- 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
- 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
- import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
- 参照C++理解
使用包组织类
在DOS下,要编译带包的Java程序有两种办法。
- 包的引用
- 引用类时包名做前缀。e.g. new java.util.Date()
- 用import语句加载需要使用的类。在程序开头用import语句加载要使用的类。
- 用import加载整个包,用*代替类名位置。他将加载包中的所有类。e.g. import java.io. * ;
Java基本数据类型
类型默认值
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘u0000’ |
String (or any object) | null |
boolean | false |
注意:
- float a=0.05; (X)
0.05默认是double型,不能赋值给比double精度低的float。
float a=0.05f; (√) - int x=5;
if(x=0)
x=1; (X)
第二行,x是int类型,而 if 语句中判断条件是布尔类型。
Java常量
常量在程序运行时不能修改。
在Java中使用final关键字修饰常量。通常使用大写字母表示常量。
- byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。
当使用常量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制,例如:
int decimal = 100;
int octal = 0144;
int hexa = 0x64; - 字符串常量和字符常量都可以包含任何Unicode字符。
自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
低 --------------------------------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换遵循如下规则:
- 不能对double类型进行转换。
- 不能把对象类型转换成不相关的类对象。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致溢出或损失精度。
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
e.g.
(int)23.7 == 23;
(int)-45.89f == -45
隐含强制类型转换
- 整数的默认类型是 int。
- 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
- 复合赋值运算符隐含强制类型转换。
Java逻辑运算符
不带符号的右移>>> 与带符号的右移 >> 在给正数进行右移操作时都是高位补0,区别在于给负数进行右移操作。
前者是高位补0,后者是高位补1
声明数组
一维数组:
格式1:数组元素类型 数组名[];
格式2:数组元素类型名[] 数组名;
给已声明的数组分配空间:
数组名 = new 数组元素类型 [元素个数];
例如:
score = new int[10];
int score[ ]=new int[ ] {1,2,3,4,5,6,7,8,9,10};
(第二个中括号中不能填写数字)
二维数组:
(1)直接为每一维分配空间,如:
int a[][] = new int [2][3];
(2)从最高维开始,按由高到低的顺序分别为每一维分配空间。如:
int a[][] = new int [2][];
a[0] = new int [3];
a[1] = new int [4]
(3)二维数组的动态创建示例:
public class ArrayOfArraysDemo2 { public static void main(String[] args) { int[][] aMatrix = new int[4][]; for (int i = 0; i < aMatrix.length; i++) { //动态创建第二维aMatrix[i] = new int[i+1]; for (int j = 0; j < aMatrix[i].length; j++) aMatrix[i][j] = i + j; } for (int i = 0; i < aMatrix.length; i++) { for (int j = 0; j < aMatrix[i].length; j++) System.out.print(aMatrix[i][j] + " "); System.out.println(); } }
}
运行结果:
0
1 2
2 3 4
3 4 5 6
Arrays类
Arrays类封装了对数组进行操作的一系列静态方法。
- 利用Arrays类的sort方法可方便地对数组排序。
例如:
java.util.Arrays.sort(a) ; //等价于前面程序蓝色部分 - 利用Arrays类的toString()方法可以将数组转化为字符串的形式。例如:System.out.print( java.util.Arrays.toString(a) );
- 利用Arrays类的copyOf()方法实现数组的拷贝。例如:
int[] b=Arrays.copyOf(a,3);
数据的输入输出
使用标准输入输出流
1.数据的输出
(1)print()方法:实现不换行的数据输出;
(2)println()方法:与上面方法的差别是输出数据后将换行。
(3)printf()方法:带格式描述的数据输出。JDK1.5新增。
该方法包含两个参数,第1个参数中给出输出格式的描述,第2个参数为输出数据,其中,输出格式描述字符串中需要安排与输出数据对应的格式符。
常用格式符包括:%d代表十进制数;%f代表浮点数;%e代表科学表示法的指数位数;%n代表换行符;%x代表十六进制数;%s代表字符串。 %c 单个字符, %% 输出百分号%
注意:输出语句中“+”的特性,如下例题体会:
System.out.println(2+3+",x="+2+3);
System.out.println(2*3+",x="+2*3);
System.out.print("1+2+3"+4+5);
输出结果:
5,x=23
6,x=6
1+2+345
2.数据的输入
- 字符类型数据输入
利用标准输入流(System.in)的read()方法,可以从键盘读取字符。但要注意,read()方法从键盘获取的是输入的字符的字节表示形式(返回结果为int类型),需要使用强制转换将其转化为字符型 。
char c=(char)System.in.read(); - 字符串输入
- 将键盘输入的数据看作字符流,利用InputStreamReader将从键盘输入的字节流数据转化为字符序列来识别 。
- 利用BufferedReader对字符流序列进行过滤,借助BufferedReader流对象提供的方法readLine()从键盘读取一个字符串。
例:字符串类型数据输入
import java.io.*;
public class InputString{ public static void main(String args[]) { String s=“”; //必须赋初值,否则编译出错System.out.print ("Enter a String please: "); try { BufferedReader in= new BufferedReader(new InputStreamReader(System.in)); s=in.readLine(); } catch (IOException e) { } System.out.println ("You've entered a String: " +s); }
}
3.整数和双精度数的输入
- 先通过上面的方法获取一个由数字字符组成的字符串,然后通过下面的转换方法转换成需要的数据。
Integer.parseInt(String s) :将数字字符串转化为整数 。
Double.parseDouble(String s) :将字符串形式的数字数据转化为双精度数。
例如:
String x="123";
int m= Integer.parseInt(x); //m 的值为123
x="123.41";
double n= Double.parseDouble(x) ; //n的值为123.41
4.使用java.util.Scanner类
- 一个扫描器,使用分隔符分解它的输入,默认情况下用空格作为分隔符。Scanner的输入源取决于构造参数,以下从标准输入(键盘)获取数据
Scanner scanner = new Scanner(System.in); - 常用方法:
boolean hasNext() : 判是否有下一个数据
int nextInt() :读取整数
double nextDouble() :读取双精度数
String nextLine() : 读取一行字符串
常用数学方法
Java基础语法初学者了解相关推荐
- Java基础语法02-流程控制
Java基础语法2 1 流程控制 1.1 概述 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程. ...
- Java 基础语法(自用)
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...
- Java基础语法(数组)
第4天 Java基础语法 今日内容介绍 u 流程控制语句(switch) u 数组 第1章 流程控制语句 1.1 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句 ...
- 使用java实现面向对象编程第二章_java面向对象编程——第二章 java基础语法
第二章 java基础语法 1.java关键字 abstract boolean break byte case catch char class const continue default do d ...
- Java基础语法(一)
Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...
- java基础语法(二)--单列模式
java基础语法(二)--单列模式 /*** 功能:单列模式* @author Administrator**/ public class SingletonTest {public static v ...
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)...
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...
- (31)Java基础语法 --接口
目录 1.接口的概述 2.接口的定义格式 3.在接口中定义抽象方法 4.定义接口的 实现类 5.接口的使用 接口练习 6.接口的特点 7.一个实现类可以同时实现多个接口 8.接口的继承 9.设计提示 ...
- Java基础语法-数据类型与idea配置
文章目录 day02 - Java基础语法 1. 注释 使用的技巧 注意点 2. 关键字 2.1 概念 2.2 第一个关键字class 3. 字面量 区分技巧 4. 变量 4.1 什么是变量? 4.2 ...
最新文章
- 沃森世界研讨会前瞻:AI服务 了解客户情绪
- 助力企业抗疫,360金融推出免费AI语音机器人
- gitlab添加用户
- jsp中获取当前项目名称
- WSL2 安装中文输入法教程 简单有效
- HTTP协议的请求与响应和CSS属性和定位
- mysql导入组织树脚本_mysql存储过程递归调用发作树数据
- 拓端tecdat|R语言回测交易:根据历史信号/交易创建股票收益曲线
- 机器学习实战应用案例100篇(十)-蝙蝠算法从原理到实战应用案例
- 设计模式-模板方法模式-以简历模板为例
- resin设置权限_resin加固
- docker部署案例
- zigbee芯片cc2430资料
- DBSCAN 对点云障碍物聚类
- java 中奖,用Java实现中奖代码,持续更新
- 跨境电商新手如何建立正确的运营思路
- Linux命令--lsof
- 如何租用国外主机--我购买美国空间bluehost的经验
- 使用postman注册登录后,原先记录消失
- log4j2输出中文乱码