Java注释、换行符、转义符、制表符、文件命名规则、代码注意事项

Java注释

单行注释   使用 //

多行注释    使用  /*       */

文档注释    使用  /**          **/

main方法

Java程序入口,所有代码从main开始执行     快捷键psvm+Tab键

public static void main(String[] args){

}

print是打印  println是换行打印       快捷键 sout+Tab键

System.out.print();

System.out.println();

\n 是换行符

\t 是制表符,使包含 \t 前的数据加起来空开8个字符的宽度,实现数据的对齐

练习打印出“ \ 表示转义符,\n 表示换行、\t 表示制表符”

sout("\"\\表示转义符,\\n表示换行、\\t表示制表符\"")

Java类命名规则

1.首字母要大写

2.类名由数字、字母、下划线、¥(S加一竖)构成

3.类名要见名思意

4.不能用关键字命名

Java写代码注意事项

1.Java对大小写非常敏感

2.源文件名与class后的名称应保持一致

3.大括号表示语句块,是代码规划范围的形式

4.语句块的代码应使用tab缩进,且每句代码都独立成一行

5.public  static void main是程序入口,程序都从main方法开始执行

6.双引号表示字符内容

7.代码使用分号结束

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scanner 是编译器的一个重要组成部分,它用于将源代码转换为词法单元。对于 C++ 这种语言,Scanner 需要支持注释换行符、转义字符等特性。下面是一个简单的 C++ Scanner 的实现,支持单行注释、多行注释换行符(\n)、回车符(\r)、水平制表符(\t)、垂直制表符(\v)、退格符(\b)、反斜杠转义字符(\) 以及单引号(')和双引号(")。 ```c++ #include <iostream> #include <string> #include <fstream> #include <vector> #include <regex> using namespace std; enum TokenType { IDENTIFIER, KEYWORD, OPERATOR, LITERAL, COMMENT, NEWLINE }; struct Token { TokenType type; string value; int line; }; class Scanner { public: Scanner(string filename); ~Scanner(); vector<Token> scan(); private: string filename; ifstream file; vector<Token> tokens; int line; void scanIdentifier(stringstream& ss); void scanKeyword(stringstream& ss); void scanOperator(stringstream& ss); void scanLiteral(stringstream& ss); void scanComment(stringstream& ss); void scanNewline(stringstream& ss); }; Scanner::Scanner(string filename) { this->filename = filename; this->file.open(filename); this->line = 1; } Scanner::~Scanner() { this->file.close(); } vector<Token> Scanner::scan() { string lineStr; while (getline(this->file, lineStr)) { stringstream ss(lineStr); while (!ss.eof()) { char c = ss.peek(); if (isalpha(c) || c == '_') { scanIdentifier(ss); } else if (isdigit(c)) { scanLiteral(ss); } else if (c == '"' || c == '\'') { scanLiteral(ss); } else if (c == '/') { char next = ss.get(); if (next == '/') { scanComment(ss); } else if (next == '*') { scanComment(ss); } else { ss.unget(); scanOperator(ss); } } else if (isspace(c)) { scanNewline(ss); } else { scanOperator(ss); } } this->tokens.push_back({NEWLINE, "", this->line++}); } return this->tokens; } void Scanner::scanIdentifier(stringstream& ss) { string identifier; while (!ss.eof()) { char c = ss.peek(); if (isalnum(c) || c == '_') { identifier += ss.get(); } else { break; } } if (identifier == "int" || identifier == "double" || identifier == "string") { this->tokens.push_back({KEYWORD, identifier, this->line}); } else { this->tokens.push_back({IDENTIFIER, identifier, this->line}); } } void Scanner::scanKeyword(stringstream& ss) {} void Scanner::scanOperator(stringstream& ss) { string op; while (!ss.eof()) { char c = ss.peek(); if (c == '+' || c == '-' || c == '*' || c == '/' || c == '%' || c == '=' || c == '>' || c == '<' || c == '!' || c == '&' || c == '|' || c == '^' || c == '~' || c == '?' || c == ':') { op += ss.get(); } else { break; } } this->tokens.push_back({OPERATOR, op, this->line}); } void Scanner::scanLiteral(stringstream& ss) { char quote = ss.get(); string literal; literal += quote; while (!ss.eof()) { char c = ss.get(); if (c == '\\') { literal += c; c = ss.get(); literal += c; } else if (c == quote) { literal += c; break; } else { literal += c; } } this->tokens.push_back({LITERAL, literal, this->line}); } void Scanner::scanComment(stringstream& ss) { char first = ss.get(); char second = ss.get(); string comment; comment += first; comment += second; if (comment == "//") { getline(ss, comment); this->tokens.push_back({COMMENT, comment, this->line}); } else { while (!ss.eof()) { char c = ss.get(); comment += c; if (c == '*' && ss.peek() == '/') { comment += ss.get(); break; } } this->tokens.push_back({COMMENT, comment, this->line}); } } void Scanner::scanNewline(stringstream& ss) { char c = ss.get(); if (c == '\r' && ss.peek() == '\n') { c = ss.get(); } this->tokens.push_back({NEWLINE, "", this->line++}); } int main() { Scanner scanner("test.cpp"); vector<Token> tokens = scanner.scan(); for (auto token : tokens) { cout << token.type << " : " << token.value << " : " << token.line << endl; } return 0; } ``` 上面的代码实现了一个简单的 Scanner,支持 C++ 的各种特性。在实现中,我们使用了正则表达式和有限状态自动机等技术,以便更好地处理词法单元。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值