【java基础】基础小总结
学习java,将自己的心得或总结写下来吧。
Java 标识符
标识符由字母,下划线(_),美元符($)和数字组成。
标识符不能以数字开头。
标识符不能使java关键字。
标识符对大小写敏感。
Java常用关键字
| 
 关键字  | 
 用途  | 
| 
 boolean, byte, char, double, float, int, long, short ,void  | 
 基本类型  | 
| 
 new, super, this, instanceof, null  | 
 对象创建,引用  | 
| 
 if, else, switch, case, default  | 
 选择语句  | 
| 
 do, while, for  | 
 循环语句  | 
| 
 break, continue, return  | 
 控制转移  | 
| 
 try, catch, finally, throw, throws, assert  | 
 异常处理  | 
| 
 synchronized  | 
 线程同步  | 
| 
 abstract, final, private, protected, public, static  | 
 修饰说明  | 
| 
 class, extends, interface, implements, import, package  | 
 类,继承,接口,包  | 
| 
 native, transient, volatile  | 
 其他方法  | 
| 
 true, false  | 
 布尔常量  | 
注意:
java中 的关键字均为小写字母,TRUE,NULL等不是关键字。
goto和const虽然在java中午作用,但仍是java的关键字。
java注释
单行注释符://
//这是单行注释符
多行注释符:/*……*/
/* 这是多行注释符 */
文档注释:/**……*/
/**
* 文档注释能被java文档化工具javadoc识别处理,在自动生成文档是有用
*/
Java数据类型
Java数据类型包括简单数据类型(基本类型)和复合数据类型(引用类型)
基本类型:代表语言能处理的基本数据。特点:占用的存储空间固定。
整数类型:byte,short,int,long
浮点类型:float,double
字符类型:char
布尔类型:boolean
引用类型:通常由多个基本数据类型或引用类型组合构成。
类:class
接口:interface
数组
【注意】java的字符串其实是String类的常量,它不是java数据类型。
| 
 关键字  | 
 数据类型  | 
 所占字节  | 
 默认值  | 
 取值范围  | 
||
| 
 byte  | 
 字节型  | 
 1  | 
 0  | 
 -2^7 ~ 2^7-1  | 
||
| 
 short  | 
 短整型  | 
 2  | 
 0  | 
 -2^15 ~ 2^15-1  | 
||
| 
 int  | 
 整型  | 
 4  | 
 0  | 
 -2^31 ~ 2^31-1  | 
||
| 
 long  | 
 长整型  | 
 8  | 
 0  | 
 -2^63 ~ 2^63-1  | 
||
| 
 float  | 
 单精度浮点型  | 
 4  | 
 0.0F  | 
 1.4e^-45 ~ 1.4e^-45-1  | 
||
| 
 double  | 
 双精度浮点型  | 
 8  | 
 0.0D  | 
 4.9e^-324 ~ 1.798e^+308  | 
||
| 
 char  | 
 字符型  | 
 2  | 
 0  | 
 0 ~ 65535  | 
||
| 
 boolean  | 
 布尔型  | 
 1  | 
 false  | 
 true, false  | 
||
常量
布尔常量:true,false
整数常量:有byte,short,int,long四种类型。有十进制,八进制,十六进制,二进制四种表示形式。
浮点常量:有float和double类型。有小数点形式和指数形式两种。
字符常量:由一对单引号括起来的单个字符或以反斜线(\)开头的转义字符。如'j', '4'。
常用转义字符
| 
 转义字符  | 
 描述  | 
| 
 \'  | 
 单引号字符  | 
| 
 \''  | 
 双引号字符  | 
| 
 \\  | 
 反斜杠  | 
| 
 \r  | 
 回车  | 
| 
 \n  | 
 换行  | 
| 
 \f  | 
 走纸换页  | 
| 
 \t  | 
 横向跳格  | 
| 
 \b  | 
 退格  | 
字符串常量:有双引号括起来的由0个或多个字符组成的字符序列。字符串可以包含转义字符。
变量的取值范围
/**
* Create by libra
*/ public class VariablesDemo {
/**变量的取值范围*/
public static void main(String[] args) {
System.out.println("数据的取值范围:");
System.out.println("字节型: " + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
System.out.println("短整型: " + Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
System.out.println("整型型: " + Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
System.out.println("长整型: " + Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
System.out.println("单精度浮点型: " + Float.MIN_VALUE + " ~ " + Float.MAX_VALUE);
System.out.println("双精度浮点型: " + Double.MIN_VALUE + " ~ " + Double.MAX_VALUE); }
}
输出结果:

强制转换
格式:变量 = (数据类型) 表达式
基本数据类型自动转换顺序:byteàshortàcharàintàlongàfloatàdouble.
【注意】布尔类型不能与其他类型转换。
运算符
运算符(双目单目)稍微提下,位运算符。
算数运算符:
| 
 算数运算符  | 
|
| 
 双目运算符  | 
 单目运算符  | 
| 
 +, -, *, /, %  | 
 ++, --, -(负号)  | 
关系运算符:
运算符优先级:(==,--) > ~ > ! > 算术运算符>移位运算符>关系运算符> &,^, | , &&, ||, ||
常用数学函数Math类
| 
 方法  | 
 功能  | 
|
| 
 int abs(int i)  | 
 求整数的绝对值  | 
|
| 
 double ceil(double d)  | 
 求不小于d的最小整数  | 
|
| 
 double floor(double d)  | 
 求不大于d的最大整数  | 
|
| 
 int max(int i1, int i2)  | 
 求两个整数中的最大数  | 
|
| 
 int min(int i1, int i2)  | 
 求两个整数中的最小数  | 
|
| 
 double random()  | 
 0~1的随机数  | 
|
| 
 int round(float f)  | 
 求最靠近f的整数  | 
|
| 
 long round(double d)  | 
 求最靠近d的长整数  | 
|
| 
 double sqrt(double a)  | 
 求平方根  | 
|
| 
 double cos(double d)  | 
 求d的余弦函数  | 
|
| 
 double log(double d)  | 
 求自然对数  | 
|
| 
 double exp(double x)  | 
 求e的x次幂(e^x)  | 
|
| 
 double pow(double a, double b)  | 
 求a的次幂  | 
|
输入输出
标准输出流System.out提供三种输出:
print():输出后不换行
println():输出后换行
printf():类似于c语言中的printf()用法
标准输入流System.in提供read()等方法。写一个程序便于说明及理解。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class Input {
public static void main(String[] args) throws IOException {
System.out.println("==============字符==============");
char ch = (char) System.in.read();
System.out.println("读入的字符为:" + ch);
System.out.println("==============字符串==============");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
System.out.println("读入的字符串为:" + s);
System.out.println("==============数字==============");
String x = "123";
int m = Integer.parseInt(x);
String y = "123.123";
float n = Float.parseFloat(y);
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
输出结果:

还可以使用java.util.Scanner类输入:
import java.util.Scanner;
public class Input {
    public static void main(String[] args) throws IOException {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入数据:");
        System.out.println("请输入数据:");
        short a = s.nextShort();    //输入短整数
        int b = s.nextInt();    //输入整数
        long c = s.nextLong();    //输入长整数
        float d = s.nextFloat();    //输入单精度浮点型
        double e = s.nextDouble();    //输入双精度浮点型
        String f = s.nextLine();    //输入字符串
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
        System.out.println("d = " + d);
        System.out.println("e = " + e);
        System.out.println("f = " + f);
    }
}
输出结果:

在Scanner中还有很多输入。
流程控制语句和c/c++没有太大区别。
【注意】循环结构体中可以用break 标号名; 和continue 标号名; 来跳出循环。
数组
一维数组声明有两种格式:
1.数组元素类型 数组名[];
2.数组元素类型[] 数组名;
建议用第二种声明方式
【建议】二维数组及多维数组声明方式类似于一维数组,不过建议大家用第二种数组声明方式,[]也是数组声明的组成部分。
【注意】
1.java数组和c/c++数组不同,java数组理解为数组的数组,数组的每一维的大小不一定相同。
例如:
int[][] a = new int[2][];
a[0] = new int[3];
a[1] = new int[4];
上面这段代码声明了一个二维数组,但是第0维和第1维的大小不相同。
2.求一维数组a长度经常用到的方法是a.length。若是多维数组也可以这样用:a[i].length,a[i][j].length ……。
对象
对象的初始化和构造方法以及变量的作用域在一个例子中说明。
public class Scope {
    //成员变量的作用域是整个类体
    int x;
    int y;
    /*对象的初始化*/
    {
        x = 2;
        y = 1;
    }
    /*对象的构造方法*/
    public Scope {
        x = 2;
        y = 1;
    }
    //方法参数a的作用域是整个方法
    public void method(int a) {
        int x = 5;
        for (int i = 1; i < a; i++) {
            //局部变量i的作用域是for循环内
            x = x + i;
        }
        System.out.println("x = " + x + ", y = " + y + ", a = " + a);
    }
    public static void main(String[] args) {
        //局部变量x的作用域从它的声明点扩展到它被定义的代码块结束
        Scope x = new Scope();
        x.method(6);
    }
}
【注意】构造方法的名称必须与类名相同;构造方法无返回类型;一个类可以提供多个构造方法,系统自动调用参数匹配的构造方法。
静态变量和静态方法
用static修饰的成员变量叫静态变量,也叫类变量。
访问:
在本类中直接访问。
通过类名访问。
通过类的一个对象访问。
【注意】静态变量的在存储上归属类空间,但是不依赖任何对象;(通过对象访问静态变量实质上还是访问类空间的变量)
【建议】在类外访问静态变量时通过类名访问以防混淆。
赋初值:即可以通过下面代码块赋初值,也可在定义时赋初值。
static {
//code
}
【注意】静态代码块只能访问静态变量;对象的创建不会执行static代码块。注意区分静态空间和对象空间。
class TalkPlace {
    static String talkArea = "";
}
public class User {
    static int count = 0;
    String username;
    int age;
    public User(String name, int yourage) {
        username = name;
        age = yourage;
    } 
    void Login() {
        //直接访问同一类中的静变量
        count++;
        System.out.println("you are no " + count + " user");
    }
    void Speak(String words) {
        //访问其他类的类变量,通过类名访问类变量
        TalkPlace.talkArea = TalkPlace.talkArea + username + "说: " + words + "\n";
    }
    public static void main(String[] args) {
        User x1 = new User("张三", 20);
        x1.Login();
        x1.Speak("hello");
        User x2 = new User("李四", 16);
        x2.Login();
        x2.Speak("good morning");
        x1.Speak("bye");
        System.out.println("-----讨论区内容如下:");
        System.out.println(TalkPlace.talkArea);
    }
}
用static修饰的方法叫静态方法,也叫类方法。
调用:
一般用类名做前缀调用。
通过对象调用
【注意】静态方法也不依赖任何对象;静态方法中只能处理静态变量和其他静态方法,绝不能访问任何归属对象空间的变量和方法。
public class FindPrime2 {
    public static boolean prime(int n) {
        for (int k = 2; k <= Math.sqrt(n); k++) {
           if (n % k == 0) {
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        // FindPrime2 a = new FindPrime2();
        for (int m = 10; m <= 100; m++) {
            //prime为静态方法,则可直接调用
            if (prime(m)) {
                   System.out.print(m + " ");
            }
        }
    }
}
【java基础】基础小总结的更多相关文章
- java基础知识小总结【转】
		
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
 - 一个小栗子聊聊JAVA泛型基础
		
背景 周五本该是愉快的,可是今天花了一个早上查问题,为什么要花一个早上?我把原因总结为两点: 日志信息严重丢失,茫茫代码毫无头绪. 对泛型的认识不够,导致代码出现了BUG. 第一个原因可以通过以后编码 ...
 - java基础知识小小结
		
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
 - JAVA面试基础
		
JAVA相关基础知识1.面向对象的特征有哪些方面 ?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂 ...
 - 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
		
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
 - Java之--Java语言基础组成—函数
		
Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...
 - Java 并发基础
		
Java 并发基础 标签 : Java基础 线程简述 线程是进程的执行部分,用来完成一定的任务; 线程拥有自己的堆栈,程序计数器和自己的局部变量,但不拥有系统资源, 他与其他线程共享父进程的共享资源及 ...
 - Java语言基础(二) Java关键字
		
Java语言基础(二) Java关键字 Java关键字比较多,我就不列举出来了,只记录一些常用的小知识点: ①Java的关键字只有小写. ②then.sizeof都不是Java的关键字,熟悉C++的程 ...
 - Java语言基础(九)
		
Java语言基础(九) 一.自增运算(++) 自减运算(--) i++ 就是将i+1再赋给 i i-- 是将i-1再赋给 i 对变量i,j来说,i++ 或++i 这里没什么区别,都是将i的值加1后,再 ...
 - Java语言基础(七)
		
Java语言基础(七) 今天在公司多呆了会,回来晚了 一.自动类型转换 在Java中,数据是可以转换的 例如可以将byte类型的赋给int类型的 这里希望你了解内存的变化,例如 在这里,我想你应该知 ...
 
随机推荐
- 确保线程安全下使用Queue的Enqueue和Dequeue
			
场景是这样,假设有一台设备会触发类型为Alarm的告警信号,并把信号添加到一个Queue结构中,每隔一段时间这个Queue会被遍历检查,其中的每个Alarm都会调用一个相应的处理方法.问题在于,检查机 ...
 - CSS动画原理及硬件加速
			
一.图层 图层即层叠上下文,具体概念和应用大家可以看我之前转自张鑫旭大神博客的<CSS层叠上下文和层叠顺序>,这里我们简单复习一下产生层叠上下文的原因. 1.根层叠上下文 指的是页面根元素 ...
 - Windows下的Jdk 1.8*安装并配置(图文详解)
			
不多说,直接上干货! 简单说下,jdk1.8*的下载,见http://www.cnblogs.com/zlslch/p/5658383.html 双击jdk-8u60-windows-x64.exe运 ...
 - [Python 从入门到放弃] 2. 列表的其它操作
			
1. 列表可以混合不同类型的数据项 movies=['<黄飞鸿之英雄有梦>','<寒战2>','<乘风破浪>'] 在这句代码中,数据项为电影名称,现在这个列表用来保 ...
 - 前端组件化Polymer入门教程(1)——初识&&安装
			
前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...
 - Mysql索引会失效的几种情况分析
			
转:https://www.jb51.net/article/50649.htm 学习啦
 - guava EventBus 消息总线的运用
			
public class Test { public static void main(String[] args) { final EventBus eventBus = new EventBus( ...
 - VS和Eclipse的调试功能哪个更强大?
			
以前一直用VS 2012来调试C/C++代码,F5.F10.F11用起来甚是顺手,前面也写过一篇关于VS最好用的快捷键:Visual Studio最好用的快捷键(你最喜欢哪个), 所以对于调试C/C+ ...
 - MySQL的视图view,视图创建后,会随着表的改变而自动改变数据
			
首先是创建视图 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `new_view` A ...
 - 简述serializable和transient关键字作用
			
transient的作用及使用方法,官方解释为: Variables may be marked transient to indicate that they are not part of the ...