Contrary to lay perceptions, code-switching (CS) is neither simply a strategy to compensate language attrition nor linguistic accommodation. It involves negotiations of self-identity in relation to particular communities. The first part of this chapter reviews studies of code-switching between Japanese and another language (English, Korean, Portuguese, Spanish, Urdu). Intersentential and intrasentential CS are analyzed from syntactic, pragmatic and discourse-analytic framework. Latter parts of this chapter shed light on heterogeneous language use by Japanese speakers in general, especially in the written medium. Japanese is no longer used in isolation even within the “monolingual” speakers’ everyday language use. In addition, Japanese is rich in registers, dialects and styles, whose use can bring about particular social identity or pragmatic effect in interaction. As English has been part of the school curriculum, bilingual puns for commercial purposes have been observed for decades. In the era of Internet, SNS users started to use hybrid syntactical constructions, sentence-final forms, as well as loan words. Japanese speakers allegedly use non-native dialects and fictional language to index particular stances, invoking particular indexical associations between linguistic form and its imagined users. In sum, questions concerning cross-points of linguistic and social boundaries that CS studies initiated are still very relevant to both linguistics and sociolinguistics today.