学习Java之语法基础

Posted So istes immer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Java之语法基础相关的知识,希望对你有一定的参考价值。

1.数据类型

在Java中,基础数据类型的大小在所有机器上都是一样的
①基本数据类型

②复合数据类型(引用类型)
数组(Array)、类(class),、接口(interface)

1.函数中基本类型和对象的引用都是在内存中分配,Java就在中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间
2.建立一个对象时,从堆栈两个地方都分配内存,在中分配的内存实际用于建立这个对象,而在中分配的内存只是一个指向这个堆对象的引用而已。在中分配的内存,由Java虚拟机的自动垃圾回收器来管理。

2.数据的输入

System.in输入流
①输入char型字符
read()方法可以从键盘读取字符,读入时的类型是byte型,需要强制类型转换
例:char c = (char)System.in.read()
②输入字符串
readLine()方法
由于从键盘输入的字符串在键盘缓冲区是字节流数据,如果要按字符序列来识别数据,需要用InputStreamReader进行转换,再用BufferedReader流对数据过滤
例:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
③输入整型和双精度数
以字符串形式输入,再用Integer.parseInt(String)和Double.parseDouble(String)方法转换
例:String x = “123”;
int x = Integer.parseInt(x);
String x = “123.41”;
double n = Double.parseDouble(x);
④使用java.util.Scanner类
Scanner in=new Scanner(System.in);
boolean a = in.hasNext() 判断是否有下一个数据
byte a = in.nextByte()
int a = in.nextInt() 读取整数
short a = in.nextShort() 读取短整数
long a = in.nextLong() 读取长整数
String s = in.nextLine() 读取字符串

3.数据输出

print()方法:不换行输出
println()方法:换行输出
printf()方法:带格式输出,和C类似,特别: %n表示换行

4.标识符组成规则

字母(A~Z、a~z)、特殊符号($、_)和数字(0~9)
第1个符号不能为数字
不能为关键词、true、false、null
区分大小写
长度任意

一般约定
表示常量的标识符全部大写,如RED
表示类名的标识符用大写字母开始,如MyCar
表示公有方法和实例变量的标识符用小写字母开始,后面的描述性词以大写开始,如getCurrentValue
表示私有或局部变量的标识符全部用小写字母,如next_value

5.分隔符

空白符:空格、换行符、制表符
分号:表示语句结束,或用于for循环语句中
逗号:变量之间的分隔
冒号:switch循环中的case语句
花括号:类体、方法体、复合语句(for/while/switch/if)

6.转义字符

\\ddd	        	138进制数所表示的字符(ddd)
\\uxxxx      		1416进制数所表示的字符(xxxx)
\\'					单引号字符
\\''					双引号字符
\\\\					反斜杠字符
\\r					回车
\\n					换行
\\f					走纸换页
\\t					横向跳格
\\b					退格

7.Unicode

Java中字符仅以一种形式存在,那就是Unicode。由于java采用unicode编码,char 在java中占2个字节
Unicode是16比特的字符编码,其支持当前世界上绝大多数的语言
Unicode给每个字符提供了一个唯一的编码表示,不论是什么平台、程序或语言

8.类型转换

①自动类型转换

源类型	     转换后不会丢失数据的目的类型
byte	      short, char, int, long, float, double
short	      char, int, long, float, double
char	      int, long, float, double
int		      long, float, double
long	      float, double
float	      double

②强制类型转换
可能产生数据精度丢失

double a = 1.5;
float b = a;
float b = (float)a;

9.包装类

Java语言用包装类把基本类型数据转换为对象。每个Java基本类型在java.lang包中都有一个相应的包装类

作用
一、区别:Integer是一个引用类型,而一个int是一个值类型
二、以List为例,动态数组的add(Object o)方法只能接受一个引用类型,即一个对象,想把数字放到一个动态数组里,就要对数字进行转化
三、包装类的一个重要的功能:适配器
String类型—>到Integer类型
想把一个String类型转换一个int类型的数据
①new Integer(String).intValue()
②Integer.parse(String)

int和Integer的互换
int a = 10;
//int转Integer
Integer b = new Integer(10);
Integer c = Integer.valueof(30);
//Integer转int
int d = b.intValue()

字符数组大小写转换

public class ep5_7 {
	public static void main(String args[]) {
		char a[] = { 'a', 'b', 'c', 'D', 'E', 'F' };
		for (int i = 0; i < a.length; i++) {
			if (Character.isLowerCase(a[i])) {
				a[i] = Character.toUpperCase(a[i]);
			} else if (Character.isUpperCase(a[i])) {
				a[i] = Character.toLowerCase(a[i]);
			}
		}
		for (int i = 0; i < a.length; i++) {
			System.out.print(" " + a[i]);
		}
	}
}

10.BigDecimal

用来对超过16位有效位的数进行精确的运算
双精度浮点型变量double可以处理16位有效数。
在实际应用中,需要对更大或者更小的数进行运算和处理。
BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法

BigDecimal b1 = new BigDecimal(Double.toString(0.05));   
BigDecimal b2 = new BigDecimal(Double.toString(0.01));   
double kk=  b1.add(b2).doubleValue(); 
BigDecimal b3 = new BigDecimal(Double.toString(4.015));   
BigDecimal b4 = new BigDecimal(Double.toString(100)); 
double kkc=b3.multiply(b4).doubleValue();

11.取余运算

被除数为负数,结果就为负的
-7 %3 -1
-12 % 4 0
-26 %-8 -2
20 % -13 7

12.switch语句

switch语句表达式的结果必须是byte, char, short, int 类型

13.foreach语句

int xs[]={1,3,4,5,5,7};
for(int x:xs){
System.out.println(" "+x);
}

14.System类

System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)

15.数组

默认赋初值
整型:初值为0 int[] i = new int[3];
实型:初值为0.0 float[] f = new float[3];
布尔型:初值为false boolean[] b = new boolean[3];
字符型:初值为\\u0000(不可见) char[] c = new char[3];

数组的整体赋值
int a[] = {2, 4, 6, 8};
int b[];
b = a;

16.练习

1.求1000以内的完数
完数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身
WanShu.java

public class WanShu {
	public static int sumOfFactors(int n) {
		int i,sum=0;
		for(i=1;i<=n/2;i++) {
			if(n%i==0)
				sum+=i;
		}
		return sum;
	}
	
	public static void main(String[] args) {
		int i=1;
		System.out.println("1000以内的完数:");
		while(i<=1000) {
			if(sumOfFactors(i)==i) {
				System.out.println(i);
			}
			i++;
		}
	}
}

2.输入一个整数,转成32位的二进制,并取出第四位到低八位
Digits.java

import java.util.Scanner;

public class Digits {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		System.out.print("请输入一个整数:");
		int n=s.nextInt();
		String str=Integer.toBinaryString(n);	//求整数的二进制
		while(str.length()<32) {				//不足32位前面补0
			str="0"+str;
		}
		System.out.print("低第4位-低第8位:");	
		System.out.print(str.substring(24,29));
	}
}

以上是关于学习Java之语法基础的主要内容,如果未能解决你的问题,请参考以下文章

Java基础学习笔记二十三 Java核心语法之反射

JavaSE入门学习7:Java基础语法之语句(下)

java学习总结--2.基础语法

JavaSE入门学习9:Java基础语法之数组

java学习笔记之基础语法

《Python学习之路 -- Python基础之切片》